home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Source / MacTech® Magazine / Volume 01 - 1984 & 1985 / 01.13 Dec 85.sit / 01.13 Dec 85 / pascal / Mondrian & dissolve source 1-13 / dissbits.asm next >
MacBinary  |  1991-12-09  |  42.3 KB  |  [TEXT/EDIT]

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: MacBinary (archive/macBinary).

ConfidenceProgramDetectionMatch TypeSupport
10% dexvert MacBinary (archive/macBinary) fallback Supported
1% dexvert Text File (text/txt) fallback Supported
100% file MacBinary II, inited, Mon Dec 9 17:30:10 1991, modified Mon Dec 9 17:30:10 1991, creator Macintosh Edit, type ASCII, 42613 bytes "dissbits.asm" , at 0xa6f5 490 bytes resource default (weak)
99% file data default
74% TrID Macintosh plain text (MacBinary) default
25% TrID MacBinary 2 default (weak)
100% siegfried fmt/1762 MacBinary (II) default
100% lsar MacBinary default


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[EDIT]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 0c 64 69 73 73 62 69 | 74 73 2e 61 73 6d 00 00 |..dissbi|ts.asm..|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 45 44 49 | 54 01 00 00 00 00 00 00 |.TEXTEDI|T.......|
|00000050| 00 00 00 00 00 a6 75 00 | 00 01 ea a5 69 9e f2 a5 |......u.|....i...|
|00000060| 69 9e f2 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |i.......|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 2e 13 00 00 |........|........|
|00000080| 3b 0d 3b 20 20 70 72 6f | 63 65 64 75 72 65 20 64 |;.; pro|cedure d|
|00000090| 69 73 73 42 69 74 73 20 | 28 73 72 63 42 2c 20 64 |issBits |(srcB, d|
|000000a0| 65 73 74 42 3a 20 62 69 | 74 4d 61 70 3b 20 73 72 |estB: bi|tMap; sr|
|000000b0| 63 52 2c 20 64 73 74 52 | 3a 20 72 65 63 74 29 3b |cR, dstR|: rect);|
|000000c0| 20 65 78 74 65 72 6e 61 | 6c 3b 0d 3b 0d 3b 20 6d | externa|l;.;.; m|
|000000d0| 69 6b 65 20 6d 6f 72 74 | 6f 6e 0d 3b 20 72 65 6c |ike mort|on.; rel|
|000000e0| 65 61 73 65 3a 20 31 35 | 20 73 65 70 74 65 6d 62 |ease: 15| septemb|
|000000f0| 65 72 20 31 39 38 35 0d | 3b 0d 3b 20 74 68 69 73 |er 1985.|;.; this|
|00000100| 20 69 73 20 74 68 65 20 | 76 65 72 73 69 6f 6e 20 | is the |version |
|00000110| 35 2e 32 2e 20 0d 3b 0d | 3b 20 64 69 66 66 65 72 |5.2. .;.|; differ|
|00000120| 65 6e 63 65 73 20 66 72 | 6f 6d 20 76 65 72 73 69 |ences fr|om versi|
|00000130| 6f 6e 20 35 20 74 6f 20 | 35 2e 32 20 61 72 65 3a |on 5 to |5.2 are:|
|00000140| 0d 3b 20 20 20 20 20 20 | 20 62 75 67 20 66 69 78 |.; | bug fix|
|00000150| 65 64 20 69 6e 20 74 68 | 65 20 66 75 6c 6c 2d 73 |ed in th|e full-s|
|00000160| 63 72 65 65 6e 2d 77 69 | 64 74 68 20 63 61 73 65 |creen-wi|dth case|
|00000170| 20 28 66 69 72 73 74 20 | 62 69 74 20 64 6f 6e 65 | (first |bit done|
|00000180| 20 72 69 67 68 74 29 0d | 3b 20 20 20 20 20 20 20 | right).|; |
|00000190| 6d 61 67 69 63 2d 63 6f | 6e 73 74 61 6e 74 20 74 |magic-co|nstant t|
|000001a0| 61 62 6c 65 20 69 73 20 | 63 6f 6d 70 61 63 74 65 |able is |compacte|
|000001b0| 64 2c 20 73 74 6f 72 65 | 64 20 69 6e 20 62 79 74 |d, store|d in byt|
|000001c0| 65 73 20 69 6e 73 74 65 | 61 64 20 6f 66 20 6c 6f |es inste|ad of lo|
|000001d0| 6e 67 73 0d 3b 20 20 20 | 20 20 20 20 73 6f 6d 65 |ngs.; | some|
|000001e0| 20 73 6d 61 6c 6c 20 63 | 68 61 6e 67 65 73 20 74 | small c|hanges t|
|000001f0| 6f 20 73 61 76 65 20 73 | 70 61 63 65 2c 20 70 6c |o save s|pace, pl|
|00000200| 75 73 20 74 68 65 20 74 | 61 62 6c 65 20 73 61 76 |us the t|able sav|
|00000210| 65 73 20 61 62 6f 75 74 | 20 31 30 30 20 62 79 74 |es about| 100 byt|
|00000220| 65 73 0d 3b 20 20 20 20 | 20 20 20 74 65 73 74 65 |es.; | teste|
|00000230| 64 20 62 79 20 61 20 70 | 72 6f 67 72 61 6d 20 6f |d by a p|rogram o|
|00000240| 6e 20 73 65 76 65 72 61 | 6c 20 6d 69 6c 6c 69 6f |n severa|l millio|
|00000250| 6e 20 63 61 73 65 73 3b | 20 74 68 69 73 20 68 65 |n cases;| this he|
|00000260| 6c 70 65 64 20 66 69 6e | 64 2e 2e 2e 0d 3b 20 20 |lped fin|d....; |
|00000270| 20 20 20 20 20 79 65 74 | 20 6d 6f 72 65 20 62 75 | yet| more bu|
|00000280| 67 73 20 69 6e 20 6c 6f | 67 32 20 72 6f 75 74 69 |gs in lo|g2 routi|
|00000290| 6e 65 20 66 69 78 65 64 | 20 28 22 62 69 74 77 69 |ne fixed| ("bitwi|
|000002a0| 64 74 68 22 20 72 6f 75 | 74 69 6e 65 20 61 64 64 |dth" rou|tine add|
|000002b0| 65 64 29 0d 3b 20 64 69 | 66 66 65 72 65 6e 63 65 |ed).; di|fference|
|000002c0| 73 20 66 72 6f 6d 20 76 | 65 72 73 69 6f 6e 20 34 |s from v|ersion 4|
|000002d0| 20 61 72 65 3a 0d 3b 20 | 20 20 20 20 20 20 6e 61 | are:.; | na|
|000002e0| 73 74 79 20 62 75 67 20 | 66 69 78 65 64 20 69 6e |sty bug |fixed in|
|000002f0| 20 63 6f 70 79 69 6e 67 | 20 73 6d 61 6c 6c 20 72 | copying| small r|
|00000300| 65 63 74 61 6e 67 6c 65 | 73 0d 3b 20 20 20 20 20 |ectangle|s.; |
|00000310| 20 20 6e 65 77 20 61 64 | 64 72 65 73 73 20 66 6f | new ad|dress fo|
|00000320| 72 20 63 6f 72 72 65 73 | 70 6f 6e 64 65 6e 63 65 |r corres|pondence|
|00000330| 0d 3b 20 20 20 20 20 20 | 20 73 6c 69 67 68 74 6c |.; | slightl|
|00000340| 79 20 6d 6f 72 65 20 64 | 65 74 61 69 6c 65 64 20 |y more d|etailed |
|00000350| 6e 6f 74 65 73 20 6f 6e | 20 63 61 6c 6c 69 6e 67 |notes on| calling|
|00000360| 20 66 72 6f 6d 20 43 0d | 3b 20 20 20 20 20 20 20 | from C.|; |
|00000370| 76 61 72 69 6f 75 73 20 | 6d 69 73 63 65 6c 6c 61 |various |miscella|
|00000380| 6e 65 6f 75 73 20 63 6f | 6d 6d 65 6e 74 20 63 68 |neous co|mment ch|
|00000390| 61 6e 67 65 73 0d 3b 20 | 64 69 66 66 65 72 65 6e |anges.; |differen|
|000003a0| 63 65 73 20 66 72 6f 6d | 20 76 65 72 73 69 6f 6e |ces from| version|
|000003b0| 20 33 20 61 72 65 3a 0d | 3b 20 20 20 20 20 20 20 | 3 are:.|; |
|000003c0| 62 75 67 73 20 69 6e 20 | 74 68 65 20 6c 6f 67 32 |bugs in |the log2|
|000003d0| 20 72 6f 75 74 69 6e 65 | 20 66 69 78 65 64 0d 3b | routine| fixed.;|
|000003e0| 20 20 20 20 20 20 20 67 | 65 6e 65 72 61 6c 20 63 | g|eneral c|
|000003f0| 61 73 65 20 73 70 65 64 | 20 75 70 20 61 62 6f 75 |ase sped| up abou|
|00000400| 74 20 66 69 76 65 20 70 | 65 72 63 65 6e 74 0d 3b |t five p|ercent.;|
|00000410| 20 20 20 20 20 20 20 63 | 65 72 74 61 69 6e 20 63 | c|ertain c|
|00000420| 61 73 65 73 20 28 65 2e | 67 2e 2c 20 74 68 65 20 |ases (e.|g., the |
|00000430| 66 75 6c 6c 20 73 63 72 | 65 65 6e 29 20 73 70 65 |full scr|een) spe|
|00000440| 64 20 75 70 20 6f 76 65 | 72 20 66 69 66 74 79 20 |d up ove|r fifty |
|00000450| 70 65 72 63 65 6e 74 0d | 3b 20 20 20 20 20 20 20 |percent.|; |
|00000460| 74 68 65 20 74 69 6d 65 | 20 74 6f 20 64 69 73 73 |the time| to diss|
|00000470| 6f 6c 76 65 20 69 73 20 | 6e 6f 74 20 64 69 72 65 |olve is |not dire|
|00000480| 63 74 6c 79 20 72 65 6c | 61 74 65 64 20 74 6f 20 |ctly rel|ated to |
|00000490| 74 68 65 20 73 69 7a 65 | 20 6f 66 20 74 68 65 20 |the size| of the |
|000004a0| 72 65 63 74 0d 3b 20 64 | 69 66 66 65 72 65 6e 63 |rect.; d|ifferenc|
|000004b0| 65 73 20 62 65 74 77 65 | 65 6e 20 76 65 72 73 69 |es betwe|en versi|
|000004c0| 6f 6e 20 32 20 61 6e 64 | 20 76 65 72 73 69 6f 6e |on 2 and| version|
|000004d0| 20 33 20 61 72 65 3a 0d | 3b 20 20 20 20 20 20 20 | 3 are:.|; |
|000004e0| 64 6f 63 75 6d 65 6e 74 | 61 74 69 6f 6e 20 69 6d |document|ation im|
|000004f0| 70 72 6f 76 65 64 20 61 | 6e 64 20 6e 65 61 74 65 |proved a|nd neate|
|00000500| 6e 65 64 0d 3b 20 20 20 | 20 20 20 20 6c 6f 67 32 |ned.; | log2|
|00000510| 20 72 6f 75 74 69 6e 65 | 20 72 65 77 72 69 74 74 | routine| rewritt|
|00000520| 65 6e 0d 3b 0d 3b 20 63 | 6f 6d 6d 65 6e 74 73 20 |en.;.; c|omments |
|00000530| 61 6e 64 20 73 75 67 67 | 65 73 74 69 6f 6e 73 20 |and sugg|estions |
|00000540| 61 72 65 2c 20 6f 66 20 | 63 6f 75 72 73 65 2c 20 |are, of |course, |
|00000550| 77 65 6c 63 6f 6d 65 2e | 0d 3b 0d 3b 20 2a 2a 2a |welcome.|.;.; ***|
|00000560| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000570| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000580| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000590| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000005a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 0d 3b 20 2a 09 |********|***.; *.|
|000005b0| 09 09 09 09 09 09 09 09 | 20 20 20 20 20 20 20 2a |........| *|
|000005c0| 0d 3b 20 2a 09 09 20 20 | 20 20 63 6f 70 79 72 69 |.; *.. | copyri|
|000005d0| 67 68 74 20 31 39 38 34 | 2c 20 31 39 38 35 20 62 |ght 1984|, 1985 b|
|000005e0| 79 20 6d 69 63 68 61 65 | 6c 20 73 2e 20 6d 6f 72 |y michae|l s. mor|
|000005f0| 74 6f 6e 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |ton | |
|00000600| 20 20 20 20 20 2a 0d 3b | 20 2a 20 20 20 20 20 20 | *.;| * |
|00000610| 20 20 20 70 65 72 6d 69 | 73 73 69 6f 6e 20 74 6f | permi|ssion to|
|00000620| 20 70 75 62 6c 69 73 68 | 20 61 6e 64 20 64 69 73 | publish| and dis|
|00000630| 74 72 69 62 75 74 65 20 | 67 72 61 6e 74 65 64 20 |tribute |granted |
|00000640| 74 6f 20 4d 61 63 54 75 | 74 6f 72 20 20 20 20 20 |to MacTu|tor |
|00000650| 20 20 20 20 20 20 2a 20 | 20 20 20 20 20 20 20 20 | * | |
|00000660| 20 20 20 20 0d 3b 20 2a | 20 20 20 20 70 6c 65 61 | .; *| plea|
|00000670| 73 65 20 73 65 65 20 64 | 65 74 61 69 6c 73 20 62 |se see d|etails b|
|00000680| 65 6c 6f 77 20 6f 6e 20 | 75 73 69 6e 67 2c 20 63 |elow on |using, c|
|00000690| 6f 70 79 69 6e 67 20 61 | 6e 64 20 63 68 61 6e 67 |opying a|nd chang|
|000006a0| 69 6e 67 20 74 68 69 73 | 20 73 6f 75 72 63 65 2e |ing this| source.|
|000006b0| 20 20 20 20 2a 0d 3b 20 | 2a 09 09 09 09 09 09 09 | *.; |*.......|
|000006c0| 09 09 20 20 20 20 20 20 | 20 2a 0d 3b 20 2a 2a 2a |.. | *.; ***|
|000006d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000006e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000006f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000700| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000710| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 0d 3b 0d 3b 20 |********|***.;.; |
|00000720| 77 68 61 74 20 74 68 69 | 73 20 72 6f 75 74 69 6e |what thi|s routin|
|00000730| 65 20 64 6f 65 73 3a 0d | 3b 20 2d 2d 2d 2d 2d 2d |e does:.|; ------|
|00000740| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000750| 0d 3b 0d 3b 20 64 69 73 | 73 42 69 74 73 20 69 73 |.;.; dis|sBits is|
|00000760| 20 6c 69 6b 65 20 63 6f | 70 79 42 69 74 73 3a 20 | like co|pyBits: |
|00000770| 69 74 20 6d 6f 76 65 73 | 20 6f 6e 65 20 72 65 63 |it moves| one rec|
|00000780| 74 20 74 6f 20 61 6e 6f | 74 68 65 72 2c 20 69 6e |t to ano|ther, in|
|00000790| 20 74 68 65 69 72 20 72 | 65 73 70 65 63 74 69 76 | their r|espectiv|
|000007a0| 65 0d 3b 20 62 69 74 4d | 61 70 73 2e 20 20 69 74 |e.; bitM|aps. it|
|000007b0| 20 64 6f 65 73 6e 27 74 | 20 69 6d 70 6c 65 6d 65 | doesn't| impleme|
|000007c0| 6e 74 20 74 68 65 20 6d | 6f 64 65 73 20 6f 66 20 |nt the m|odes of |
|000007d0| 63 6f 70 79 42 69 74 73 | 2c 20 6e 6f 72 20 63 6c |copyBits|, nor cl|
|000007e0| 69 70 70 69 6e 67 20 74 | 6f 20 61 0d 3b 20 72 65 |ipping t|o a.; re|
|000007f0| 67 69 6f 6e 2e 20 20 77 | 68 61 74 20 69 74 20 44 |gion. w|hat it D|
|00000800| 4f 45 53 20 64 6f 20 69 | 73 20 63 6f 70 79 20 74 |OES do i|s copy t|
|00000810| 68 65 20 62 69 74 73 20 | 69 6e 20 61 20 70 73 65 |he bits |in a pse|
|00000820| 75 64 6f 2d 72 61 6e 64 | 6f 6d 20 6f 72 64 65 72 |udo-rand|om order|
|00000830| 2c 20 67 69 76 69 6e 67 | 0d 3b 20 74 68 65 20 61 |, giving|.; the a|
|00000840| 70 70 65 61 72 61 6e 63 | 65 20 6f 66 20 22 64 69 |ppearanc|e of "di|
|00000850| 73 73 6f 6c 76 69 6e 67 | 22 20 66 72 6f 6d 20 6f |ssolving|" from o|
|00000860| 6e 65 20 69 6d 61 67 65 | 20 74 6f 20 61 6e 6f 74 |ne image| to anot|
|00000870| 68 65 72 2e 20 20 74 68 | 65 20 64 69 73 73 6f 6c |her. th|e dissol|
|00000880| 76 65 20 69 73 0d 3b 20 | 72 61 70 69 64 3a 20 74 |ve is.; |rapid: t|
|00000890| 68 65 20 65 6e 74 69 72 | 65 20 73 63 72 65 65 6e |he entir|e screen|
|000008a0| 20 77 69 6c 6c 20 64 69 | 73 73 6f 6c 76 65 20 69 | will di|ssolve i|
|000008b0| 6e 20 75 6e 64 65 72 20 | 66 6f 75 72 20 73 65 63 |n under |four sec|
|000008c0| 6f 6e 64 73 2e 09 20 28 | 6e 6f 74 65 3a 20 73 6d |onds.. (|note: sm|
|000008d0| 61 6c 6c 65 72 0d 3b 20 | 61 72 65 61 73 20 6d 61 |aller.; |areas ma|
|000008e0| 79 20 62 65 20 53 4c 4f | 57 45 52 20 74 6f 20 64 |y be SLO|WER to d|
|000008f0| 69 73 73 6f 6c 76 65 20 | 2d 2d 20 73 65 65 20 62 |issolve |-- see b|
|00000900| 65 6c 6f 77 2e 29 0d 3b | 0d 3b 20 63 6f 70 79 42 |elow.).;|.; copyB|
|00000910| 69 74 73 20 70 61 79 73 | 20 61 74 74 65 6e 74 69 |its pays| attenti|
|00000920| 6f 6e 20 74 6f 20 74 68 | 65 20 63 75 72 72 65 6e |on to th|e curren|
|00000930| 74 20 63 6c 69 70 70 69 | 6e 67 2e 20 20 74 68 69 |t clippi|ng. thi|
|00000940| 73 20 72 6f 75 74 69 6e | 65 20 64 6f 65 73 6e 27 |s routin|e doesn'|
|00000950| 74 2e 0d 3b 0d 3b 20 6f | 74 68 65 72 20 6c 69 6b |t..;.; o|ther lik|
|00000960| 65 6c 79 20 64 69 66 66 | 65 72 65 6e 63 65 73 20 |ely diff|erences |
|00000970| 66 72 6f 6d 20 63 6f 70 | 79 42 69 74 73 3a 0d 3b |from cop|yBits:.;|
|00000980| 20 20 20 20 20 6f 09 20 | 74 68 65 20 72 65 63 74 | o. |the rect|
|00000990| 61 6e 67 6c 65 73 20 6d | 75 73 74 20 68 61 76 65 |angles m|ust have|
|000009a0| 20 74 68 65 20 73 61 6d | 65 20 65 78 74 65 6e 74 | the sam|e extent|
|000009b0| 73 20 28 6e 6f 74 20 6e | 65 63 65 73 73 61 72 69 |s (not n|ecessari|
|000009c0| 6c 79 20 74 68 65 20 73 | 61 6d 65 0d 3b 09 20 6c |ly the s|ame.;. l|
|000009d0| 72 62 74 29 2e 09 20 69 | 66 20 74 68 65 79 20 61 |rbt).. i|f they a|
|000009e0| 72 65 20 6e 6f 74 2c 20 | 74 68 65 20 72 6f 75 74 |re not, |the rout|
|000009f0| 69 6e 65 20 77 69 6c 6c | 20 72 65 74 75 72 6e 20 |ine will| return |
|00000a00| 2d 2d 20 64 6f 69 6e 67 | 20 6e 6f 74 68 69 6e 67 |-- doing| nothing|
|00000a10| 21 0d 3b 09 20 6e 6f 20 | 73 74 72 65 74 63 68 69 |!.;. no |stretchi|
|00000a20| 6e 67 20 63 6f 70 79 20 | 69 73 20 64 6f 6e 65 20 |ng copy |is done |
|00000a30| 61 73 20 63 6f 70 79 42 | 69 74 73 20 77 6f 75 6c |as copyB|its woul|
|00000a40| 64 2e 0d 3b 20 20 20 20 | 20 6f 09 20 74 68 65 20 |d..; | o. the |
|00000a50| 63 75 72 73 6f 72 20 69 | 73 20 68 69 64 64 65 6e |cursor i|s hidden|
|00000a60| 20 64 75 72 69 6e 67 20 | 74 68 65 20 64 69 73 73 | during |the diss|
|00000a70| 6f 6c 76 65 2c 20 73 69 | 6e 63 65 20 64 72 61 77 |olve, si|nce draw|
|00000a80| 69 6e 67 20 69 73 20 64 | 6f 6e 65 20 77 69 74 68 |ing is d|one with|
|00000a90| 6f 75 74 0d 3b 09 20 71 | 75 69 63 6b 64 72 61 77 |out.;. q|uickdraw|
|00000aa0| 20 63 61 6c 6c 73 2e 20 | 20 74 68 65 20 63 75 72 | calls. | the cur|
|00000ab0| 73 6f 72 20 72 65 61 70 | 70 65 61 72 73 20 77 68 |sor reap|pears wh|
|00000ac0| 65 6e 20 74 68 65 20 64 | 72 61 77 69 6e 67 20 69 |en the d|rawing i|
|00000ad0| 73 20 66 69 6e 69 73 68 | 65 64 2e 0d 3b 09 20 66 |s finish|ed..;. f|
|00000ae0| 6f 72 20 61 6e 20 6f 64 | 64 20 65 66 66 65 63 74 |or an od|d effect|
|00000af0| 2c 20 63 68 61 6e 67 65 | 20 69 74 20 6e 6f 74 20 |, change| it not |
|00000b00| 74 6f 20 68 69 64 65 20 | 74 68 65 20 63 75 72 73 |to hide |the curs|
|00000b10| 6f 72 3b 20 69 73 20 74 | 68 69 73 20 68 6f 77 20 |or; is t|his how |
|00000b20| 62 69 6c 6c 0d 3b 09 20 | 61 74 6b 69 6e 73 6f 6e |bill.;. |atkinson|
|00000b30| 20 74 68 6f 75 67 68 74 | 20 6f 66 20 74 68 65 20 | thought| of the |
|00000b40| 73 70 72 61 79 20 63 61 | 6e 20 69 6e 20 4d 61 63 |spray ca|n in Mac|
|00000b50| 50 61 69 6e 74 3f 0d 3b | 20 20 20 20 20 6f 09 20 |Paint?.;| o. |
|00000b60| 63 6f 70 79 42 69 74 73 | 20 6d 61 79 20 62 65 20 |copyBits| may be |
|00000b70| 73 6d 61 72 74 20 65 6e | 6f 75 67 68 20 74 6f 20 |smart en|ough to |
|00000b80| 64 65 61 6c 20 77 69 74 | 68 20 6f 76 65 72 6c 61 |deal wit|h overla|
|00000b90| 70 70 69 6e 67 20 61 72 | 65 61 73 20 6f 66 20 6d |pping ar|eas of m|
|00000ba0| 65 6d 6f 72 79 2e 0d 3b | 09 20 74 68 69 73 20 72 |emory..;|. this r|
|00000bb0| 6f 75 74 69 6e 65 20 63 | 65 72 74 61 69 6e 6c 79 |outine c|ertainly|
|00000bc0| 20 69 73 6e 27 74 2e 0d | 3b 20 20 20 20 20 6f 09 | isn't..|; o.|
|00000bd0| 20 62 65 63 61 75 73 65 | 20 74 68 69 73 20 72 6f | because| this ro|
|00000be0| 75 74 69 6e 65 20 69 73 | 20 64 65 73 70 65 72 61 |utine is| despera|
|00000bf0| 74 65 20 66 6f 72 20 73 | 70 65 65 64 2c 20 69 74 |te for s|peed, it|
|00000c00| 20 73 74 65 61 6c 73 20 | 74 68 65 20 41 35 20 28 | steals |the A5 (|
|00000c10| 67 6c 6f 62 61 6c 73 29 | 0d 3b 09 20 72 65 67 69 |globals)|.;. regi|
|00000c20| 73 74 65 72 2c 20 75 73 | 65 73 20 69 74 20 69 6e |ster, us|es it in|
|00000c30| 20 74 68 65 20 63 65 6e | 74 72 61 6c 20 6c 6f 6f | the cen|tral loo|
|00000c40| 70 2c 20 74 68 65 6e 20 | 72 65 73 74 6f 72 65 73 |p, then |restores|
|00000c50| 20 69 74 20 62 65 66 6f | 72 65 0d 3b 09 20 72 65 | it befo|re.;. re|
|00000c60| 74 75 72 6e 69 6e 67 2e | 20 69 66 20 79 6f 75 20 |turning.| if you |
|00000c70| 68 61 76 65 20 76 65 72 | 74 69 63 61 6c 20 72 65 |have ver|tical re|
|00000c80| 74 72 61 63 65 20 74 61 | 73 6b 73 20 77 68 69 63 |trace ta|sks whic|
|00000c90| 68 20 72 75 6e 20 64 75 | 72 69 6e 67 20 74 68 65 |h run du|ring the|
|00000ca0| 0d 3b 09 20 64 69 73 73 | 6f 6c 76 65 2c 20 74 68 |.;. diss|olve, th|
|00000cb0| 65 79 27 6c 6c 20 77 61 | 6b 65 20 75 70 20 77 69 |ey'll wa|ke up wi|
|00000cc0| 74 68 20 74 68 65 20 62 | 6f 67 75 73 20 41 35 2e |th the b|ogus A5.|
|00000cd0| 20 20 73 69 6e 63 65 20 | 74 68 65 20 52 4f 4d 20 | since |the ROM |
|00000ce0| 70 75 6c 6c 73 20 74 68 | 69 73 0d 3b 09 20 74 72 |pulls th|is.;. tr|
|00000cf0| 69 63 6b 20 74 6f 6f 2c | 20 69 20 66 65 65 6c 20 |ick too,| i feel |
|00000d00| 74 68 69 73 20 69 73 6e | 27 74 20 61 20 62 75 67 |this isn|'t a bug|
|00000d10| 20 69 6e 20 4d 59 20 63 | 6f 64 65 2c 20 62 75 74 | in MY c|ode, but|
|00000d20| 20 69 74 20 49 53 20 6d | 6f 72 65 20 6c 69 6b 65 | it IS m|ore like|
|00000d30| 6c 79 0d 3b 09 20 74 6f | 20 65 78 70 6f 73 65 20 |ly.;. to| expose |
|00000d40| 62 75 67 73 20 69 6e 20 | 56 42 4c 20 74 61 73 6b |bugs in |VBL task|
|00000d50| 73 2e 20 20 74 6f 20 63 | 6f 72 72 65 63 74 20 74 |s. to c|orrect t|
|00000d60| 68 65 20 70 72 6f 62 6c | 65 6d 2c 20 68 61 76 65 |he probl|em, have|
|00000d70| 20 79 6f 75 72 20 74 61 | 73 6b 0d 3b 09 20 6c 6f | your ta|sk.;. lo|
|00000d80| 61 64 20 41 35 20 66 72 | 6f 6d 20 74 68 65 20 6c |ad A5 fr|om the l|
|00000d90| 6f 77 20 52 41 4d 20 6c | 6f 63 61 74 69 6f 6e 20 |ow RAM l|ocation |
|00000da0| 22 63 75 72 72 65 6e 74 | 41 35 22 20 69 6d 6d 65 |"current|A5" imme|
|00000db0| 64 69 61 74 65 6c 79 20 | 75 70 6f 6e 20 73 74 61 |diately |upon sta|
|00000dc0| 72 74 69 6e 67 0d 3b 09 | 20 75 70 2c 20 74 68 65 |rting.;.| up, the|
|00000dd0| 6e 20 72 65 73 74 6f 72 | 65 20 69 74 73 20 63 61 |n restor|e its ca|
|00000de0| 6c 6c 65 72 27 73 20 41 | 35 20 62 65 66 6f 72 65 |ller's A|5 before|
|00000df0| 20 72 65 74 75 72 6e 69 | 6e 67 2e 0d 3b 0d 3b 20 | returni|ng..;.; |
|00000e00| 79 6f 75 20 73 68 6f 75 | 6c 64 20 6b 6e 6f 77 20 |you shou|ld know |
|00000e10| 61 20 66 65 77 20 69 6d | 70 6c 65 6d 65 6e 74 61 |a few im|plementa|
|00000e20| 74 69 6f 6e 20 64 65 74 | 61 69 6c 73 20 77 68 69 |tion det|ails whi|
|00000e30| 63 68 20 6d 61 79 20 68 | 65 6c 70 3a 0d 3b 20 20 |ch may h|elp:.; |
|00000e40| 20 20 20 6f 09 20 63 6f | 70 79 69 6e 67 20 66 72 | o. co|pying fr|
|00000e50| 6f 6d 20 61 20 64 61 72 | 6b 20 61 72 65 61 20 28 |om a dar|k area (|
|00000e60| 6c 6f 74 73 20 6f 66 20 | 31 20 62 69 74 73 29 20 |lots of |1 bits) |
|00000e70| 69 73 20 73 6c 6f 77 65 | 72 20 74 68 61 6e 20 66 |is slowe|r than f|
|00000e80| 72 6f 6d 20 61 20 6c 69 | 67 68 74 0d 3b 09 20 61 |rom a li|ght.;. a|
|00000e90| 72 65 61 2e 20 20 62 75 | 74 20 6a 75 73 74 20 62 |rea. bu|t just b|
|00000ea0| 61 72 65 6c 79 20 28 61 | 20 66 65 77 20 70 65 72 |arely (a| few per|
|00000eb0| 20 63 65 6e 74 29 2e 0d | 3b 20 20 20 20 20 6f 09 | cent)..|; o.|
|00000ec0| 20 74 68 65 72 65 20 69 | 73 20 6e 6f 20 77 61 79 | there i|s no way|
|00000ed0| 20 74 6f 20 75 73 65 20 | 74 68 69 73 20 74 6f 20 | to use |this to |
|00000ee0| 72 61 6e 64 6f 6d 6c 79 | 20 69 6e 76 65 72 74 20 |randomly| invert |
|00000ef0| 61 20 72 65 63 74 61 6e | 67 6c 65 2e 20 20 69 6e |a rectan|gle. in|
|00000f00| 73 74 65 61 64 2c 0d 3b | 09 20 63 6f 70 79 42 69 |stead,.;|. copyBi|
|00000f10| 74 73 20 69 74 20 65 6c | 73 65 77 68 65 72 65 2c |ts it el|sewhere,|
|00000f20| 20 69 6e 76 65 72 74 20 | 69 74 2c 20 61 6e 64 20 | invert |it, and |
|00000f30| 64 69 73 73 42 69 74 73 | 20 69 74 20 62 61 63 6b |dissBits| it back|
|00000f40| 20 69 6e 74 6f 20 70 6c | 61 63 65 2e 0d 3b 20 20 | into pl|ace..; |
|00000f50| 20 20 20 6f 09 20 74 68 | 65 72 65 20 69 73 20 61 | o. th|ere is a|
|00000f60| 6c 73 6f 20 6e 6f 20 77 | 61 79 20 74 6f 20 73 6c |lso no w|ay to sl|
|00000f70| 6f 77 20 74 68 65 20 64 | 69 73 73 6f 6c 76 65 20 |ow the d|issolve |
|00000f80| 6f 66 20 61 20 73 6d 61 | 6c 6c 20 61 72 65 61 2e |of a sma|ll area.|
|00000f90| 20 20 74 6f 20 64 6f 20 | 74 68 69 73 2c 0d 3b 09 | to do |this,.;.|
|00000fa0| 20 63 6f 70 79 20 61 20 | 6c 61 72 67 65 20 61 72 | copy a |large ar|
|00000fb0| 65 61 20 69 6e 20 77 68 | 69 63 68 20 74 68 65 20 |ea in wh|ich the |
|00000fc0| 6f 6e 6c 79 20 64 69 66 | 66 65 72 65 6e 63 65 20 |only dif|ference |
|00000fd0| 69 73 20 74 68 65 20 61 | 72 65 61 20 74 6f 20 63 |is the a|rea to c|
|00000fe0| 68 61 6e 67 65 2e 0d 3b | 20 20 20 20 20 6f 09 20 |hange..;| o. |
|00000ff0| 69 66 20 79 6f 75 20 66 | 61 64 65 20 69 6e 20 61 |if you f|ade in a|
|00001000| 20 73 6f 6c 69 64 20 61 | 72 65 61 2c 20 79 6f 75 | solid a|rea, you|
|00001010| 27 72 65 20 6c 69 6b 65 | 6c 79 20 74 6f 20 73 65 |'re like|ly to se|
|00001020| 65 20 70 61 74 74 65 72 | 6e 73 2c 20 73 69 6e 63 |e patter|ns, sinc|
|00001030| 65 20 74 68 65 0d 3b 09 | 20 72 61 6e 64 6f 6d 20 |e the.;.| random |
|00001040| 6e 75 6d 62 65 72 73 20 | 61 72 65 20 73 6f 20 63 |numbers |are so c|
|00001050| 68 65 65 73 79 2e 20 20 | 64 6f 6e 27 74 20 64 6f |heesy. |don't do|
|00001060| 20 74 68 69 73 3b 20 66 | 61 64 65 20 69 6e 20 6e | this; f|ade in n|
|00001070| 69 66 74 79 20 70 61 74 | 74 65 72 6e 73 0d 3b 09 |ifty pat|terns.;.|
|00001080| 20 77 68 69 63 68 20 77 | 69 6c 6c 20 64 69 73 74 | which w|ill dist|
|00001090| 72 61 63 74 20 79 6f 75 | 72 20 76 69 65 77 65 72 |ract you|r viewer|
|000010a0| 73 2e 0d 3b 20 20 20 20 | 20 6f 20 76 65 72 79 20 |s..; | o very |
|000010b0| 73 6d 61 6c 6c 20 61 72 | 65 61 73 20 28 6c 65 73 |small ar|eas (les|
|000010c0| 73 20 74 68 61 6e 20 32 | 20 70 69 78 65 6c 73 20 |s than 2| pixels |
|000010d0| 69 6e 20 65 69 74 68 65 | 72 20 64 69 6d 65 6e 73 |in eithe|r dimens|
|000010e0| 69 6f 6e 29 20 61 72 65 | 20 61 63 74 75 61 6c 6c |ion) are| actuall|
|000010f0| 79 0d 3b 20 20 20 20 20 | 20 20 64 6f 6e 65 20 77 |y.; | done w|
|00001100| 69 74 68 20 61 20 63 61 | 6c 6c 20 74 6f 20 74 68 |ith a ca|ll to th|
|00001110| 65 20 72 65 61 6c 20 63 | 6f 70 79 42 69 74 73 20 |e real c|opyBits |
|00001120| 72 6f 75 74 69 6e 65 2c | 20 73 69 6e 63 65 20 74 |routine,| since t|
|00001130| 68 65 20 70 73 65 75 64 | 6f 2d 72 61 6e 64 6f 6d |he pseud|o-random|
|00001140| 0d 3b 20 20 20 20 20 20 | 20 73 65 71 75 65 6e 63 |.; | sequenc|
|00001150| 65 20 67 65 6e 65 72 61 | 74 6f 72 20 66 61 6c 6c |e genera|tor fall|
|00001160| 73 20 61 70 61 72 74 20 | 75 6e 64 65 72 20 74 68 |s apart |under th|
|00001170| 6f 73 65 20 63 6f 6e 64 | 69 74 69 6f 6e 73 2e 0d |ose cond|itions..|
|00001180| 3b 0d 3b 20 61 20 63 6c | 6f 73 65 20 72 65 6c 61 |;.; a cl|ose rela|
|00001190| 74 69 76 65 20 6f 66 20 | 74 68 69 73 20 72 6f 75 |tive of |this rou|
|000011a0| 74 69 6e 65 20 69 73 20 | 22 64 69 73 73 42 79 74 |tine is |"dissByt|
|000011b0| 65 73 22 2c 20 77 68 69 | 63 68 20 28 61 73 20 79 |es", whi|ch (as y|
|000011c0| 6f 75 20 6d 69 67 68 74 | 20 67 75 65 73 73 29 0d |ou might| guess).|
|000011d0| 3b 20 63 6f 70 69 65 73 | 20 61 20 62 79 74 65 20 |; copies| a byte |
|000011e0| 61 74 20 61 20 74 69 6d | 65 2c 20 77 68 69 63 68 |at a tim|e, which|
|000011f0| 20 69 73 20 72 65 61 6c | 6c 79 20 66 61 73 74 20 | is real|ly fast |
|00001200| 28 74 68 65 20 77 68 6f | 6c 65 20 73 63 72 65 65 |(the who|le scree|
|00001210| 6e 20 69 6e 20 2e 31 20 | 6f 72 20 2e 32 0d 3b 20 |n in .1 |or .2.; |
|00001220| 73 65 63 6f 6e 64 73 29 | 2e 20 20 69 74 20 77 6f |seconds)|. it wo|
|00001230| 72 6b 73 20 6f 6e 6c 79 | 20 66 6f 72 20 63 65 72 |rks only| for cer|
|00001240| 74 61 69 6e 20 72 65 63 | 74 61 6e 67 6c 65 73 2c |tain rec|tangles,|
|00001250| 20 74 68 6f 75 67 68 2e | 0d 3b 0d 3b 20 73 61 6d | though.|.;.; sam|
|00001260| 70 6c 65 20 63 61 6c 6c | 69 6e 67 20 63 6f 64 65 |ple call|ing code|
|00001270| 3a 0d 3b 20 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |:.; ----|--------|
|00001280| 2d 2d 2d 2d 2d 2d 2d 0d | 3b 0d 3b 20 74 68 69 73 |-------.|;.; this|
|00001290| 20 69 73 20 61 6e 20 65 | 78 63 65 72 70 74 20 66 | is an e|xcerpt f|
|000012a0| 72 6f 6d 20 68 6f 77 20 | 61 20 70 72 65 72 65 6c |rom how |a prerel|
|000012b0| 65 61 73 65 20 6f 66 20 | 44 61 72 54 65 72 6d 69 |ease of |DarTermi|
|000012c0| 6e 61 6c 20 63 61 6c 6c | 65 64 20 74 68 69 73 20 |nal call|ed this |
|000012d0| 72 6f 75 74 69 6e 65 2e | 0d 3b 20 6e 6f 74 65 20 |routine.|.; note |
|000012e0| 74 68 65 20 63 6c 65 76 | 65 72 20 75 73 65 20 6f |the clev|er use o|
|000012f0| 66 20 22 70 61 69 6e 74 | 62 65 68 69 6e 64 22 2e |f "paint|behind".|
|00001300| 09 20 74 68 69 73 20 74 | 6f 6f 6b 20 61 62 6f 75 |. this t|ook abou|
|00001310| 74 20 33 20 73 65 63 6f | 6e 64 73 20 74 6f 20 64 |t 3 seco|nds to d|
|00001320| 69 73 73 6f 6c 76 65 0d | 3b 20 6f 6e 74 6f 20 74 |issolve.|; onto t|
|00001330| 68 65 20 73 63 72 65 65 | 6e 2e 0d 3b 0d 3b 76 61 |he scree|n..;.;va|
|00001340| 72 20 20 20 72 67 3a 20 | 20 20 20 20 20 72 67 6e |r rg: | rgn|
|00001350| 68 61 6e 64 6c 65 3b 09 | 09 20 20 20 20 20 20 20 |handle;.|. |
|00001360| 20 28 2a 20 77 69 6e 64 | 6f 77 20 74 6f 20 63 6f | (* wind|ow to co|
|00001370| 70 79 20 69 6e 74 6f 20 | 2a 29 0d 3b 20 20 20 20 |py into |*).; |
|00001380| 20 20 61 70 6f 72 74 3a | 20 20 20 67 72 61 66 70 | aport:| grafp|
|00001390| 74 72 3b 09 09 20 20 20 | 20 20 20 20 20 28 2a 20 |tr;.. | (* |
|000013a0| 70 6f 72 74 20 74 6f 20 | 64 72 61 77 20 69 6e 74 |port to |draw int|
|000013b0| 6f 20 2a 29 0d 3b 20 20 | 20 20 20 20 62 69 74 73 |o *).; | bits|
|000013c0| 3a 20 20 20 20 62 69 74 | 6d 61 70 3b 09 09 09 20 |: bit|map;... |
|000013d0| 20 20 20 20 20 20 20 28 | 2a 20 6e 65 77 20 62 69 | (|* new bi|
|000013e0| 74 6d 61 70 20 66 6f 72 | 20 74 68 61 74 20 70 6f |tmap for| that po|
|000013f0| 72 74 20 2a 29 0d 3b 20 | 20 20 20 20 20 72 3a 20 |rt *).; | r: |
|00001400| 20 20 20 20 20 20 72 65 | 63 74 3b 09 09 09 20 20 | re|ct;... |
|00001410| 20 20 20 20 20 20 28 2a | 20 72 65 63 74 61 6e 67 | (*| rectang|
|00001420| 6c 65 20 74 6f 20 64 72 | 61 77 20 69 6e 74 6f 20 |le to dr|aw into |
|00001430| 2a 29 0d 3b 20 20 20 20 | 20 20 70 61 74 3a 20 20 |*).; | pat: |
|00001440| 20 20 20 70 61 74 74 65 | 72 6e 3b 0d 3b 20 20 20 | patte|rn;.; |
|00001450| 20 20 20 74 65 78 74 3a | 20 20 20 20 70 61 63 6b | text:| pack|
|00001460| 65 64 20 61 72 72 61 79 | 5b 31 2e 2e 33 37 5d 20 |ed array|[1..37] |
|00001470| 6f 66 20 63 68 61 72 3b | 0d 3b 20 2e 2e 2e 0d 3b |of char;|.; ....;|
|00001480| 20 20 20 61 70 6f 72 74 | 20 3a 3d 20 67 72 61 66 | aport| := graf|
|00001490| 70 74 72 28 6e 65 77 70 | 74 72 28 73 69 7a 65 6f |ptr(newp|tr(sizeo|
|000014a0| 66 28 67 72 61 66 70 6f | 72 74 29 29 29 3b 20 28 |f(grafpo|rt))); (|
|000014b0| 2a 20 67 65 74 20 61 20 | 70 6f 72 74 20 2a 29 0d |* get a |port *).|
|000014c0| 3b 20 20 20 6f 70 65 6e | 70 6f 72 74 28 61 70 6f |; open|port(apo|
|000014d0| 72 74 29 3b 09 09 09 20 | 20 20 20 20 20 20 20 28 |rt);... | (|
|000014e0| 2a 20 6d 61 6b 65 20 69 | 74 20 63 75 72 72 65 6e |* make i|t curren|
|000014f0| 74 20 2a 29 0d 3b 0d 3b | 20 20 20 72 20 3a 3d 20 |t *).;.;| r := |
|00001500| 74 68 65 70 6f 72 74 5e | 2e 70 6f 72 74 62 69 74 |theport^|.portbit|
|00001510| 73 2e 62 6f 75 6e 64 73 | 3b 09 20 20 20 20 20 20 |s.bounds|;. |
|00001520| 20 20 28 2a 20 73 74 61 | 72 74 20 77 69 74 68 20 | (* sta|rt with |
|00001530| 77 68 6f 6c 65 20 73 63 | 72 65 65 6e 20 2a 29 0d |whole sc|reen *).|
|00001540| 3b 20 20 20 69 6e 73 65 | 74 72 65 63 74 28 72 2c |; inse|trect(r,|
|00001550| 31 30 30 2c 31 30 30 29 | 3b 09 09 20 20 20 20 20 |100,100)|;.. |
|00001560| 20 20 20 28 2a 20 67 65 | 74 20 77 69 6e 64 6f 77 | (* ge|t window|
|00001570| 2d 73 69 7a 65 20 72 65 | 63 74 20 2a 29 0d 3b 20 |-size re|ct *).; |
|00001580| 20 20 28 2a 20 6e 6f 74 | 65 20 74 68 61 74 20 74 | (* not|e that t|
|00001590| 68 65 20 6e 75 6d 62 65 | 72 20 6f 66 20 62 79 74 |he numbe|r of byt|
|000015a0| 65 73 20 70 65 72 20 72 | 6f 77 20 6d 75 73 74 20 |es per r|ow must |
|000015b0| 62 65 20 65 76 65 6e 21 | 20 2a 29 0d 3b 20 20 20 |be even!| *).; |
|000015c0| 62 69 74 73 2e 72 6f 77 | 62 79 74 65 73 20 3a 3d |bits.row|bytes :=|
|000015d0| 20 28 28 28 72 2e 72 69 | 67 68 74 2d 72 2e 6c 65 | (((r.ri|ght-r.le|
|000015e0| 66 74 29 2b 31 35 29 20 | 64 69 76 20 31 36 29 20 |ft)+15) |div 16) |
|000015f0| 2a 20 32 3b 20 28 2a 20 | 66 69 6e 64 20 62 79 74 |* 2; (* |find byt|
|00001600| 65 73 2f 72 6f 77 20 2a | 29 0d 3b 20 20 20 62 69 |es/row *|).; bi|
|00001610| 74 73 2e 62 61 73 65 61 | 64 64 72 20 3a 3d 20 71 |ts.basea|ddr := q|
|00001620| 64 70 74 72 28 6e 65 77 | 70 74 72 28 62 69 74 73 |dptr(new|ptr(bits|
|00001630| 2e 72 6f 77 62 79 74 65 | 73 2a 28 72 2e 62 6f 74 |.rowbyte|s*(r.bot|
|00001640| 74 6f 6d 2d 72 2e 74 6f | 70 29 29 29 3b 20 28 2a |tom-r.to|p))); (*|
|00001650| 20 67 65 74 20 73 70 61 | 63 65 20 2a 29 0d 3b 20 | get spa|ce *).; |
|00001660| 20 20 62 69 74 73 2e 62 | 6f 75 6e 64 73 20 3a 3d | bits.b|ounds :=|
|00001670| 20 72 3b 09 09 09 20 20 | 20 20 20 20 20 20 28 2a | r;... | (*|
|00001680| 20 62 6f 75 6e 64 61 72 | 79 20 72 65 63 74 20 66 | boundar|y rect f|
|00001690| 6f 72 20 62 69 74 6d 61 | 70 20 2a 29 0d 3b 0d 3b |or bitma|p *).;.;|
|000016a0| 20 20 20 73 65 74 70 6f | 72 74 62 69 74 73 28 62 | setpo|rtbits(b|
|000016b0| 69 74 73 29 3b 09 09 09 | 20 20 20 20 20 20 20 20 |its);...| |
|000016c0| 28 2a 20 6d 61 6b 65 20 | 6e 65 77 20 62 69 74 6d |(* make |new bitm|
|000016d0| 61 70 20 63 75 72 72 65 | 6e 74 20 2a 29 0d 3b 0d |ap curre|nt *).;.|
|000016e0| 3b 20 20 20 65 72 61 73 | 65 72 65 63 74 28 72 29 |; eras|erect(r)|
|000016f0| 3b 0d 3b 20 20 20 74 65 | 78 74 66 6f 6e 74 28 6c |;.; te|xtfont(l|
|00001700| 6f 6e 64 6f 6e 29 3b 20 | 74 65 78 74 73 69 7a 65 |ondon); |textsize|
|00001710| 28 31 38 29 3b 20 74 65 | 78 74 66 61 63 65 28 5b |(18); te|xtface([|
|00001720| 62 6f 6c 64 5d 29 3b 0d | 3b 20 20 20 74 65 78 74 |bold]);.|; text|
|00001730| 20 3a 3d 20 27 44 61 72 | 54 65 72 6d 69 6e 61 6c | := 'Dar|Terminal|
|00001740| 20 76 65 72 73 69 6f 6e | 20 2d 31 2e 39 20 20 41 | version| -1.9 A|
|00001750| 75 67 75 73 74 20 31 39 | 38 34 27 3b 0d 3b 20 20 |ugust 19|84';.; |
|00001760| 20 74 65 78 74 62 6f 78 | 28 40 74 65 78 74 2c 33 | textbox|(@text,3|
|00001770| 37 2c 72 2c 74 65 6a 75 | 73 74 63 65 6e 74 65 72 |7,r,teju|stcenter|
|00001780| 29 3b 0d 3b 0d 3b 20 20 | 20 64 69 73 73 62 69 74 |);.;.; | dissbit|
|00001790| 73 28 62 69 74 73 2c 73 | 63 72 65 65 6e 70 6f 72 |s(bits,s|creenpor|
|000017a0| 74 5e 2e 70 6f 72 74 62 | 69 74 73 2c 72 2c 72 29 |t^.portb|its,r,r)|
|000017b0| 3b 20 20 20 20 28 2a 20 | 64 69 73 73 6f 6c 76 65 |; (* |dissolve|
|000017c0| 20 69 74 20 69 6e 20 2a | 29 0d 3b 0d 3b 20 20 20 | it in *|).;.; |
|000017d0| 72 65 70 65 61 74 20 75 | 6e 74 69 6c 20 67 65 74 |repeat u|ntil get|
|000017e0| 6e 65 78 74 65 76 65 6e | 74 28 6d 64 6f 77 6e 6d |nexteven|t(mdownm|
|000017f0| 61 73 6b 2b 6b 65 79 64 | 6f 77 6e 6d 61 73 6b 2c |ask+keyd|ownmask,|
|00001800| 61 6e 65 76 65 6e 74 29 | 3b 20 28 2a 20 6c 65 74 |anevent)|; (* let|
|00001810| 20 27 65 6d 20 67 61 77 | 6b 20 2a 29 0d 3b 0d 3b | 'em gaw|k *).;.;|
|00001820| 20 20 20 72 67 20 3a 3d | 20 6e 65 77 72 67 6e 3b | rg :=| newrgn;|
|00001830| 09 09 09 20 20 20 20 20 | 20 20 20 28 2a 20 67 65 |... | (* ge|
|00001840| 74 20 61 20 72 65 67 69 | 6f 6e 20 74 6f 20 63 6c |t a regi|on to cl|
|00001850| 69 70 20 77 69 74 68 20 | 2a 29 0d 3b 20 20 20 72 |ip with |*).; r|
|00001860| 65 63 74 72 67 6e 28 72 | 67 2c 72 29 3b 09 09 09 |ectrgn(r|g,r);...|
|00001870| 20 20 20 20 20 20 20 20 | 28 2a 20 61 73 20 61 20 | |(* as a |
|00001880| 72 65 63 74 61 6e 67 6c | 65 20 2a 29 0d 3b 20 20 |rectangl|e *).; |
|00001890| 20 70 61 69 6e 74 62 65 | 68 69 6e 64 28 77 69 6e | paintbe|hind(win|
|000018a0| 64 6f 77 70 65 65 6b 28 | 66 72 6f 6e 74 77 69 6e |dowpeek(|frontwin|
|000018b0| 64 6f 77 29 2c 72 67 29 | 3b 20 20 20 20 28 2a 20 |dow),rg)|; (* |
|000018c0| 75 70 64 61 74 65 20 74 | 68 69 73 20 61 72 65 61 |update t|his area|
|000018d0| 20 6f 66 20 73 63 72 65 | 65 6e 20 2a 29 0d 3b 0d | of scre|en *).;.|
|000018e0| 3b 20 20 20 64 69 73 70 | 6f 73 65 72 67 6e 28 72 |; disp|osergn(r|
|000018f0| 67 29 3b 0d 3b 20 20 20 | 64 69 73 70 6f 73 70 74 |g);.; |dispospt|
|00001900| 72 28 70 74 72 28 62 69 | 74 73 2e 62 61 73 65 61 |r(ptr(bi|ts.basea|
|00001910| 64 64 72 29 29 3b 0d 3b | 20 20 20 64 69 73 70 6f |ddr));.;| dispo|
|00001920| 73 70 74 72 28 70 74 72 | 28 61 70 6f 72 74 29 29 |sptr(ptr|(aport))|
|00001930| 3b 0d 3b 0d 3b 0d 3b 20 | 63 61 6c 6c 69 6e 67 20 |;.;.;.; |calling |
|00001940| 66 72 6f 6d 20 6c 61 6e | 67 75 61 67 65 73 20 6f |from lan|guages o|
|00001950| 74 68 65 72 20 74 68 61 | 6e 20 70 61 73 63 61 6c |ther tha|n pascal|
|00001960| 3a 0d 3b 20 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |:.; ----|--------|
|00001970| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00001980| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0d 3b 0d 3b |--------|----.;.;|
|00001990| 20 74 68 69 73 20 72 6f | 75 74 69 6e 65 20 75 73 | this ro|utine us|
|000019a0| 65 73 20 74 68 65 20 73 | 74 61 6e 64 61 72 64 20 |es the s|tandard |
|000019b0| 4c 69 73 61 20 50 61 73 | 63 61 6c 20 63 61 6c 6c |Lisa Pas|cal call|
|000019c0| 69 6e 67 20 73 65 71 75 | 65 6e 63 65 2e 20 20 74 |ing sequ|ence. t|
|000019d0| 6f 20 63 6f 6e 76 65 72 | 74 20 69 74 20 74 6f 0d |o conver|t it to.|
|000019e0| 3b 20 6d 6f 73 74 20 43 | 20 63 6f 6d 70 69 6c 65 |; most C| compile|
|000019f0| 72 73 2c 20 79 6f 75 27 | 6c 6c 20 70 72 6f 62 61 |rs, you'|ll proba|
|00001a00| 62 6c 79 20 6a 75 73 74 | 20 68 61 76 65 20 74 6f |bly just| have to|
|00001a10| 20 64 65 6c 65 74 65 20 | 74 68 69 73 20 69 6e 73 | delete |this ins|
|00001a20| 74 72 75 63 74 69 6f 6e | 20 66 72 6f 6d 0d 3b 20 |truction| from.; |
|00001a30| 6e 65 61 72 20 74 68 65 | 20 65 6e 64 20 6f 66 20 |near the| end of |
|00001a40| 74 68 65 20 6d 61 69 6e | 20 72 6f 75 74 69 6e 65 |the main| routine|
|00001a50| 3a 0d 3b 20 20 20 20 20 | 20 20 61 64 64 2e 6c 20 |:.; | add.l |
|00001a60| 23 70 73 69 7a 65 2c 53 | 50 09 09 20 20 20 20 20 |#psize,S|P.. |
|00001a70| 20 20 20 3b 20 75 6e 73 | 74 61 63 6b 20 70 61 72 | ; uns|tack par|
|00001a80| 61 6d 65 74 65 72 73 0d | 3b 0d 3b 20 69 27 64 20 |ameters.|;.; i'd |
|00001a90| 62 65 20 76 65 72 79 20 | 69 6e 74 65 72 65 73 74 |be very |interest|
|00001aa0| 65 64 20 69 6e 20 68 65 | 61 72 69 6e 67 20 61 62 |ed in he|aring ab|
|00001ab0| 6f 75 74 20 73 75 63 63 | 65 73 73 66 75 6c 20 75 |out succ|essful u|
|00001ac0| 73 65 73 20 6f 66 20 74 | 68 69 73 20 72 6f 75 74 |ses of t|his rout|
|00001ad0| 69 6e 65 20 66 72 6f 6d | 0d 3b 20 6f 74 68 65 72 |ine from|.; other|
|00001ae0| 20 6c 61 6e 67 75 61 67 | 65 73 2e 0d 3b 0d 3b 20 | languag|es..;.; |
|00001af0| 73 70 65 65 64 20 6f 66 | 20 74 68 65 20 64 69 73 |speed of| the dis|
|00001b00| 73 6f 6c 76 65 3a 0d 3b | 20 2d 2d 2d 2d 2d 2d 2d |solve:.;| -------|
|00001b10| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0d 3b |--------|------.;|
|00001b20| 0d 3b 20 79 6f 75 20 6e | 65 65 64 20 74 6f 20 70 |.; you n|eed to p|
|00001b30| 61 79 20 61 74 74 65 6e | 74 69 6f 6e 20 74 6f 20 |ay atten|tion to |
|00001b40| 74 68 69 73 20 73 65 63 | 74 69 6f 6e 20 6f 6e 6c |this sec|tion onl|
|00001b50| 79 20 69 66 3a 20 28 61 | 29 20 79 6f 75 20 77 61 |y if: (a|) you wa|
|00001b60| 6e 74 20 74 68 65 20 64 | 69 73 73 6f 6c 76 65 0d |nt the d|issolve.|
|00001b70| 3b 20 74 6f 20 72 75 6e | 20 61 73 20 66 61 73 74 |; to run| as fast|
|00001b80| 20 61 73 20 69 74 20 63 | 61 6e 20 4f 52 20 28 62 | as it c|an OR (b|
|00001b90| 29 20 79 6f 75 20 64 6f | 20 64 69 73 73 6f 6c 76 |) you do| dissolv|
|00001ba0| 65 73 20 6f 66 20 76 61 | 72 69 6f 75 73 20 73 69 |es of va|rious si|
|00001bb0| 7a 65 73 20 61 6e 64 20 | 77 61 6e 74 0d 3b 20 74 |zes and |want.; t|
|00001bc0| 68 65 6d 20 74 6f 20 74 | 61 6b 65 20 70 72 6f 70 |hem to t|ake prop|
|00001bd0| 6f 72 74 69 6f 6e 61 74 | 65 20 6c 65 6e 67 74 68 |ortionat|e length|
|00001be0| 73 20 6f 66 20 74 69 6d | 65 2e 0d 3b 0d 3b 20 74 |s of tim|e..;.; t|
|00001bf0| 68 65 72 65 20 61 72 65 | 20 33 20 6c 65 76 65 6c |here are| 3 level|
|00001c00| 73 20 6f 66 20 73 70 65 | 65 64 3b 20 74 68 65 20 |s of spe|ed; the |
|00001c10| 66 61 73 74 65 73 74 20 | 70 6f 73 73 69 62 6c 65 |fastest |possible|
|00001c20| 20 6f 6e 65 20 69 73 20 | 63 68 6f 73 65 6e 20 66 | one is |chosen f|
|00001c30| 6f 72 20 79 6f 75 3a 0d | 3b 20 28 31 29 20 61 6e |or you:.|; (1) an|
|00001c40| 20 6f 72 64 69 6e 61 72 | 79 20 64 69 73 73 6f 6c | ordinar|y dissol|
|00001c50| 76 65 20 77 69 6c 6c 20 | 77 6f 72 6b 20 77 68 65 |ve will |work whe|
|00001c60| 6e 20 6d 6f 76 69 6e 67 | 20 66 72 6f 6d 20 61 6e |n moving| from an|
|00001c70| 79 20 62 69 74 6d 61 70 | 20 74 6f 20 61 6e 79 20 |y bitmap| to any |
|00001c80| 62 69 74 6d 61 70 2c 0d | 3b 20 20 20 20 20 69 6e |bitmap,.|; in|
|00001c90| 63 6c 75 64 69 6e 67 20 | 6f 6e 20 74 68 65 20 4c |cluding |on the L|
|00001ca0| 69 73 61 20 75 6e 64 65 | 72 20 4d 61 63 57 6f 72 |isa unde|r MacWor|
|00001cb0| 6b 73 2e 20 20 74 68 69 | 73 20 77 69 6c 6c 20 64 |ks. thi|s will d|
|00001cc0| 69 73 73 6f 6c 76 65 20 | 61 74 20 61 62 6f 75 74 |issolve |at about|
|00001cd0| 20 34 39 0d 3b 20 20 20 | 20 20 6d 69 63 72 6f 73 | 49.; | micros|
|00001ce0| 65 63 6f 6e 64 73 20 70 | 65 72 20 70 69 78 65 6c |econds p|er pixel|
|00001cf0| 2e 20 20 61 20 72 65 63 | 74 61 6e 67 6c 65 20 6f |. a rec|tangle o|
|00001d00| 6e 65 2d 71 75 61 72 74 | 65 72 20 74 68 65 20 73 |ne-quart|er the s|
|00001d10| 69 7a 65 20 6f 66 20 74 | 68 65 20 73 63 72 65 65 |ize of t|he scree|
|00001d20| 6e 0d 3b 20 20 20 20 20 | 77 69 6c 6c 20 64 69 73 |n.; |will dis|
|00001d30| 73 6f 6c 76 65 20 69 6e | 20 6a 75 73 74 20 6f 76 |solve in| just ov|
|00001d40| 65 72 20 74 77 6f 20 73 | 65 63 6f 6e 64 73 2e 20 |er two s|econds. |
|00001d50| 20 74 68 65 20 73 70 65 | 65 64 20 70 65 72 20 70 | the spe|ed per p|
|00001d60| 69 78 65 6c 20 77 69 6c | 6c 20 76 61 72 79 0d 3b |ixel wil|l vary.;|
|00001d70| 20 20 20 20 20 73 6c 69 | 67 68 74 6c 79 2c 20 61 | sli|ghtly, a|
|00001d80| 6e 64 20 77 69 6c 6c 20 | 62 65 20 6c 65 73 73 20 |nd will |be less |
|00001d90| 69 66 20 79 6f 75 72 20 | 72 65 63 74 20 65 78 74 |if your |rect ext|
|00001da0| 65 6e 74 73 20 61 72 65 | 20 63 6c 6f 73 65 20 74 |ents are| close t|
|00001db0| 6f 20 62 75 74 20 6c 65 | 73 73 0d 3b 20 20 20 20 |o but le|ss.; |
|00001dc0| 20 74 68 61 6e 20 70 6f | 77 65 72 73 20 6f 66 20 | than po|wers of |
|00001dd0| 32 2e 0d 3b 20 28 32 29 | 20 74 68 65 20 64 69 73 |2..; (2)| the dis|
|00001de0| 73 6f 6c 76 65 20 77 69 | 6c 6c 20 73 70 65 65 64 |solve wi|ll speed|
|00001df0| 20 75 70 20 69 66 20 62 | 6f 74 68 20 74 68 65 20 | up if b|oth the |
|00001e00| 73 6f 75 72 63 65 20 61 | 6e 64 20 64 65 73 74 69 |source a|nd desti|
|00001e10| 6e 61 74 69 6f 6e 20 62 | 69 74 6d 61 70 73 20 68 |nation b|itmaps h|
|00001e20| 61 76 65 0d 3b 20 20 20 | 20 20 72 6f 77 42 79 74 |ave.; | rowByt|
|00001e30| 65 73 20 66 69 65 6c 64 | 73 20 77 68 69 63 68 20 |es field|s which |
|00001e40| 61 72 65 20 70 6f 77 65 | 72 73 20 6f 66 20 74 77 |are powe|rs of tw|
|00001e50| 6f 2e 20 20 69 66 20 79 | 6f 75 27 72 65 20 63 6f |o. if y|ou're co|
|00001e60| 70 79 69 6e 67 20 74 6f | 20 74 68 65 20 73 63 72 |pying to| the scr|
|00001e70| 65 65 6e 0d 3b 20 20 20 | 20 20 6f 6e 20 61 20 6d |een.; | on a m|
|00001e80| 61 63 2c 20 74 68 65 20 | 72 6f 77 42 79 74 65 73 |ac, the |rowBytes|
|00001e90| 20 66 69 65 6c 64 20 61 | 6c 72 65 61 64 79 20 73 | field a|lready s|
|00001ea0| 61 74 69 73 66 69 65 73 | 20 74 68 69 73 2e 20 20 |atisfies| this. |
|00001eb0| 73 6f 2c 20 6d 61 6b 65 | 20 79 6f 75 72 20 73 6f |so, make| your so|
|00001ec0| 75 72 63 65 0d 3b 20 20 | 20 20 20 62 69 74 6d 61 |urce.; | bitma|
|00001ed0| 70 20 74 68 65 20 72 69 | 67 68 74 20 77 69 64 74 |p the ri|ght widt|
|00001ee0| 68 20 66 6f 72 20 61 20 | 63 68 65 61 70 20 73 70 |h for a |cheap sp|
|00001ef0| 65 65 64 75 70 20 2d 2d | 20 61 62 6f 75 74 20 32 |eedup --| about 2|
|00001f00| 30 25 20 66 61 73 74 65 | 72 2e 0d 3b 20 28 33 29 |0% faste|r..; (3)|
|00001f10| 20 74 68 65 20 66 61 6e | 63 69 65 73 74 20 6c 65 | the fan|ciest le|
|00001f20| 76 65 6c 20 69 73 20 69 | 6e 74 65 6e 64 65 64 20 |vel is i|ntended |
|00001f30| 66 6f 72 20 63 6f 70 79 | 69 6e 67 20 74 68 65 20 |for copy|ing the |
|00001f40| 77 68 6f 6c 65 20 73 63 | 72 65 65 6e 2e 20 20 69 |whole sc|reen. i|
|00001f50| 74 27 6c 6c 20 70 61 69 | 6e 74 0d 3b 20 20 20 20 |t'll pai|nt.; |
|00001f60| 20 69 74 20 69 6e 20 61 | 62 6f 75 74 20 33 2e 34 | it in a|bout 3.4|
|00001f70| 20 73 65 63 6f 6e 64 73 | 20 28 31 39 20 6d 69 63 | seconds| (19 mic|
|00001f80| 72 6f 73 65 63 6f 6e 64 | 73 20 70 65 72 20 70 69 |rosecond|s per pi|
|00001f90| 78 65 6c 29 2e 20 20 61 | 63 74 75 61 6c 6c 79 2c |xel). a|ctually,|
|00001fa0| 20 70 61 69 6e 74 69 6e | 67 0d 3b 20 20 20 20 20 | paintin|g.; |
|00001fb0| 61 6e 79 20 72 65 63 74 | 61 6e 67 6c 65 20 77 68 |any rect|angle wh|
|00001fc0| 69 63 68 20 69 73 20 74 | 68 65 20 66 75 6c 6c 20 |ich is t|he full |
|00001fd0| 77 69 64 74 68 20 6f 66 | 20 74 68 65 20 73 63 72 |width of| the scr|
|00001fe0| 65 65 6e 20 77 69 6c 6c | 20 72 75 6e 20 61 74 20 |een will| run at |
|00001ff0| 74 68 69 73 0d 3b 20 20 | 20 20 20 73 70 65 65 64 |this.; | speed|
|00002000| 2c 20 66 6f 72 20 77 68 | 61 74 20 74 68 61 74 27 |, for wh|at that'|
|00002010| 73 20 77 6f 72 74 68 2e | 0d 3b 0d 3b 20 64 75 70 |s worth.|.;.; dup|
|00002020| 6c 69 63 61 74 69 6f 6e | 20 61 6e 64 20 75 73 65 |lication| and use|
|00002030| 20 6f 66 20 74 68 69 73 | 20 72 6f 75 74 69 6e 65 | of this| routine|
|00002040| 3a 0d 3b 20 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |:.; ----|--------|
|00002050| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002060| 2d 2d 2d 2d 2d 2d 2d 0d | 3b 0d 3b 20 74 68 69 73 |-------.|;.; this|
|00002070| 20 69 73 20 66 72 65 65 | 77 61 72 65 2e 20 20 79 | is free|ware. y|
|00002080| 6f 75 27 72 65 20 77 65 | 6c 63 6f 6d 65 20 74 6f |ou're we|lcome to|
|00002090| 20 63 6f 70 79 20 69 74 | 20 61 6e 64 20 75 73 65 | copy it| and use|
|000020a0| 20 69 74 20 69 6e 20 70 | 72 6f 67 72 61 6d 73 2e | it in p|rograms.|
|000020b0| 20 20 79 6f 75 27 72 65 | 0d 3b 20 77 65 6c 63 6f | you're|.; welco|
|000020c0| 6d 65 20 74 6f 20 6d 6f | 64 69 66 79 20 69 74 2c |me to mo|dify it,|
|000020d0| 20 61 73 20 6c 6f 6e 67 | 20 61 73 20 79 6f 75 20 | as long| as you |
|000020e0| 6c 65 61 76 65 20 65 76 | 65 72 79 74 68 69 6e 67 |leave ev|erything|
|000020f0| 20 75 70 20 75 6e 74 69 | 6c 20 74 68 69 73 20 73 | up unti|l this s|
|00002100| 65 63 74 69 6f 6e 0d 3b | 20 75 6e 63 68 61 6e 67 |ection.;| unchang|
|00002110| 65 64 2e 20 20 69 27 64 | 20 62 65 20 76 65 72 79 |ed. i'd| be very|
|00002120| 20 69 6e 74 65 72 65 73 | 74 65 64 20 69 6e 20 73 | interes|ted in s|
|00002130| 65 65 69 6e 67 20 79 6f | 75 72 20 63 68 61 6e 67 |eeing yo|ur chang|
|00002140| 65 73 2c 20 65 73 70 65 | 63 69 61 6c 6c 79 20 69 |es, espe|cially i|
|00002150| 66 20 79 6f 75 0d 3b 20 | 66 69 6e 64 20 77 61 79 |f you.; |find way|
|00002160| 73 20 74 6f 20 6d 61 6b | 65 20 74 68 65 20 63 65 |s to mak|e the ce|
|00002170| 6e 74 72 61 6c 20 6c 6f | 6f 70 73 20 66 61 73 74 |ntral lo|ops fast|
|00002180| 65 72 2e 20 20 79 6f 75 | 27 72 65 20 61 6c 73 6f |er. you|'re also|
|00002190| 20 77 65 6c 63 6f 6d 65 | 20 74 6f 20 70 6f 72 74 | welcome| to port|
|000021a0| 20 69 74 0d 3b 20 74 6f | 20 6f 74 68 65 72 20 6d | it.; to| other m|
|000021b0| 61 63 68 69 6e 65 73 2f | 6c 61 6e 67 75 61 67 65 |achines/|language|
|000021c0| 73 3b 20 69 27 64 20 61 | 70 70 72 65 63 69 61 74 |s; i'd a|ppreciat|
|000021d0| 65 20 68 65 61 72 69 6e | 67 20 61 62 6f 75 74 20 |e hearin|g about |
|000021e0| 65 66 66 6f 72 74 73 20 | 74 6f 20 64 6f 20 74 68 |efforts |to do th|
|000021f0| 69 73 2e 0d 3b 0d 3b 20 | 74 68 69 73 20 69 73 20 |is..;.; |this is |
|00002200| 22 66 72 65 65 77 61 72 | 65 22 3b 20 70 6c 65 61 |"freewar|e"; plea|
|00002210| 73 65 20 70 61 79 20 6d | 65 20 69 66 20 79 6f 75 |se pay m|e if you|
|00002220| 20 75 73 65 20 69 74 2e | 20 20 77 68 79 3f 0d 3b | use it.| why?.;|
|00002230| 0d 3b 20 20 20 20 20 20 | 20 6f 20 69 66 20 79 6f |.; | o if yo|
|00002240| 75 20 68 61 76 65 20 70 | 72 6f 62 6c 65 6d 73 20 |u have p|roblems |
|00002250| 75 73 69 6e 67 20 69 74 | 2c 20 69 27 6c 6c 20 68 |using it|, i'll h|
|00002260| 65 6c 70 20 79 6f 75 20 | 64 65 62 75 67 20 69 74 |elp you |debug it|
|00002270| 2e 0d 3b 20 20 20 20 20 | 20 20 6f 20 69 27 6c 6c |..; | o i'll|
|00002280| 20 73 65 6e 64 20 79 6f | 75 20 69 6d 70 72 6f 76 | send yo|u improv|
|00002290| 65 64 2c 20 64 65 62 75 | 67 67 65 64 2c 20 66 61 |ed, debu|gged, fa|
|000022a0| 73 74 65 72 20 76 65 72 | 73 69 6f 6e 73 2e 0d 3b |ster ver|sions..;|
|000022b0| 20 20 20 20 20 20 20 6f | 20 69 27 6c 6c 20 74 65 | o| i'll te|
|000022c0| 6c 6c 20 79 6f 75 20 61 | 62 6f 75 74 20 6f 74 68 |ll you a|bout oth|
|000022d0| 65 72 20 70 72 6f 64 75 | 63 74 73 2e 20 20 74 68 |er produ|cts. th|
|000022e0| 69 73 20 69 73 20 74 68 | 65 20 66 69 72 73 74 20 |is is th|e first |
|000022f0| 74 68 69 6e 67 20 69 20 | 65 76 65 72 0d 3b 09 20 |thing i |ever.;. |
|00002300| 20 77 72 6f 74 65 20 66 | 6f 72 20 74 68 65 20 4d | wrote f|or the M|
|00002310| 61 63 3b 20 77 6f 75 6c | 64 6e 27 74 20 79 6f 75 |ac; woul|dn't you|
|00002320| 20 6c 69 6b 65 20 74 6f | 20 73 65 65 20 77 68 61 | like to| see wha|
|00002330| 74 20 65 6c 73 65 20 69 | 27 76 65 20 70 72 6f 64 |t else i|'ve prod|
|00002340| 75 63 65 64 3f 0d 3b 09 | 20 20 73 65 6e 64 20 6d |uced?.;.| send m|
|00002350| 65 20 73 6f 6d 65 20 70 | 6f 73 69 74 69 76 65 20 |e some p|ositive |
|00002360| 66 65 65 64 62 61 63 6b | 21 0d 3b 0d 3b 20 68 6f |feedback|!.;.; ho|
|00002370| 77 20 6d 75 63 68 20 73 | 68 6f 75 6c 64 20 79 6f |w much s|hould yo|
|00002380| 75 20 70 61 79 3f 20 20 | 6d 79 20 73 75 67 67 65 |u pay? |my sugge|
|00002390| 73 74 69 6f 6e 20 69 73 | 3a 0d 3b 20 20 20 20 20 |stion is|:.; |
|000023a0| 20 20 28 63 6f 73 74 20 | 6f 66 20 6f 6e 65 20 63 | (cost |of one c|
|000023b0| 6f 70 79 20 6f 66 20 74 | 68 65 20 70 72 6f 67 72 |opy of t|he progr|
|000023c0| 61 6d 29 20 2a 20 28 6c | 6f 67 31 30 20 6f 66 20 |am) * (l|og10 of |
|000023d0| 6e 75 6d 62 65 72 20 6f | 66 20 63 6f 70 69 65 73 |number o|f copies|
|000023e0| 20 73 6f 6c 64 29 0d 3b | 20 69 66 20 74 68 65 20 | sold).;| if the |
|000023f0| 73 75 62 72 6f 75 74 69 | 6e 65 20 69 73 20 61 6e |subrouti|ne is an|
|00002400| 20 69 6e 74 65 67 72 61 | 6c 20 70 61 72 74 20 6f | integra|l part o|
|00002410| 66 20 79 6f 75 72 20 70 | 72 6f 67 72 61 6d 2c 20 |f your p|rogram, |
|00002420| 64 6f 75 62 6c 65 20 74 | 68 69 73 20 61 6d 6f 75 |double t|his amou|
|00002430| 6e 74 2e 0d 3b 20 69 66 | 20 69 74 27 73 20 61 20 |nt..; if| it's a |
|00002440| 66 72 69 6c 6c 20 28 65 | 2e 67 2e 2c 20 79 6f 75 |frill (e|.g., you|
|00002450| 20 64 69 73 73 6f 6c 76 | 65 20 69 6e 20 79 6f 75 | dissolv|e in you|
|00002460| 72 20 22 41 62 6f 75 74 | 20 4d 61 63 57 68 61 74 |r "About| MacWhat|
|00002470| 65 76 65 72 22 29 2c 20 | 68 61 6c 76 65 20 69 74 |ever"), |halve it|
|00002480| 2e 0d 3b 0d 3b 20 69 20 | 66 69 6e 64 20 69 74 20 |..;.; i |find it |
|00002490| 68 61 72 64 20 74 6f 20 | 62 65 6c 69 65 76 65 20 |hard to |believe |
|000024a0| 74 68 61 74 20 61 6e 79 | 20 64 61 6d 61 67 65 73 |that any| damages|
|000024b0| 20 74 6f 20 79 6f 75 20 | 6f 72 20 61 6e 79 6f 6e | to you |or anyon|
|000024c0| 65 20 65 6c 73 65 20 63 | 6f 75 6c 64 20 63 6f 6d |e else c|ould com|
|000024d0| 65 0d 3b 20 66 72 6f 6d | 20 62 75 67 73 20 69 6e |e.; from| bugs in|
|000024e0| 20 74 68 69 73 20 72 6f | 75 74 69 6e 65 2e 20 20 | this ro|utine. |
|000024f0| 62 75 74 2c 20 61 6c 61 | 73 2c 20 77 68 65 74 68 |but, ala|s, wheth|
|00002500| 65 72 20 6f 72 20 6e 6f | 74 20 79 6f 75 20 70 61 |er or no|t you pa|
|00002510| 79 20 6d 65 2c 20 69 20 | 63 61 6e 27 74 20 62 65 |y me, i |can't be|
|00002520| 0d 3b 20 6c 69 61 62 6c | 65 20 69 6e 20 61 6e 79 |.; liabl|e in any|
|00002530| 20 77 61 79 20 66 6f 72 | 20 61 6e 79 20 70 72 6f | way for| any pro|
|00002540| 62 6c 65 6d 73 20 69 6e | 20 69 74 2e 0d 3b 0d 3b |blems in| it..;.;|
|00002550| 20 73 65 6e 64 20 63 6f | 6d 6d 65 6e 74 73 2c 20 | send co|mments, |
|00002560| 63 6f 6e 74 72 69 62 75 | 74 69 6f 6e 73 2c 20 63 |contribu|tions, c|
|00002570| 72 69 74 69 63 69 73 6d | 73 2c 20 6f 72 20 77 68 |riticism|s, or wh|
|00002580| 61 74 65 76 65 72 20 74 | 6f 3a 0d 3b 20 20 20 20 |atever t|o:.; |
|00002590| 20 20 20 6d 69 6b 65 20 | 6d 6f 72 74 6f 6e 0d 3b | mike |morton.;|
|000025a0| 20 20 20 20 20 20 20 49 | 4e 46 4f 43 4f 4d 0d 3b | I|NFOCOM.;|
|000025b0| 20 20 20 20 20 20 20 31 | 32 35 20 43 61 6d 62 72 | 1|25 Cambr|
|000025c0| 69 64 67 65 50 61 72 6b | 20 44 72 2e 0d 3b 20 20 |idgePark| Dr..; |
|000025d0| 20 20 20 20 20 43 61 6d | 62 72 69 64 67 65 2c 20 | Cam|bridge, |
|000025e0| 4d 41 20 20 30 32 31 34 | 30 0d 3b 0d 3b 20 69 66 |MA 0214|0.;.; if|
|000025f0| 2c 20 66 6f 72 20 73 6f | 6d 65 20 72 65 61 73 6f |, for so|me reaso|
|00002600| 6e 2c 20 79 6f 75 20 6f | 6e 6c 79 20 68 61 76 65 |n, you o|nly have|
|00002610| 20 61 20 68 61 72 64 20 | 63 6f 70 79 20 6f 66 20 | a hard |copy of |
|00002620| 74 68 69 73 20 61 6e 64 | 20 77 6f 75 6c 64 20 6c |this and| would l|
|00002630| 69 6b 65 20 61 0d 3b 20 | 73 6f 75 72 63 65 20 6f |ike a.; |source o|
|00002640| 6e 20 61 20 64 69 73 6b | 65 74 74 65 2c 20 70 6c |n a disk|ette, pl|
|00002650| 65 61 73 65 20 63 6f 6e | 74 61 63 74 3a 0d 3b 20 |ease con|tact:.; |
|00002660| 20 20 20 20 20 20 4d 61 | 63 54 75 74 6f 72 0d 3b | Ma|cTutor.;|
|00002670| 09 53 6f 75 72 63 65 20 | 43 6f 64 65 20 44 69 73 |.Source |Code Dis|
|00002680| 6b 73 0d 3b 20 20 20 20 | 20 20 20 50 2e 4f 2e 20 |ks.; | P.O. |
|00002690| 42 6f 78 20 38 34 36 0d | 3b 20 20 20 20 20 20 20 |Box 846.|; |
|000026a0| 50 6c 61 63 65 6e 74 69 | 61 2c 20 43 41 2e 20 39 |Placenti|a, CA. 9|
|000026b0| 32 36 37 30 0d 3b 20 20 | 20 20 20 20 20 28 37 31 |2670.; | (71|
|000026c0| 34 29 20 35 37 39 2d 37 | 37 30 30 0d 3b 0d 0d 3b |4) 579-7|700.;..;|
|000026d0| 0d 3b 20 74 68 69 6e 67 | 73 20 74 6f 20 74 68 69 |.; thing|s to thi|
|000026e0| 6e 6b 20 61 62 6f 75 74 | 3a 0d 3b 20 2d 2d 2d 2d |nk about|:.; ----|
|000026f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00002700| 2d 0d 3b 0d 3b 20 6f 20 | 20 63 6c 65 61 6e 20 75 |-.;.; o | clean u|
|00002710| 70 20 74 68 65 20 72 65 | 67 69 73 74 65 72 20 75 |p the re|gister u|
|00002720| 73 61 67 65 20 28 61 73 | 20 69 66 20 69 27 6c 6c |sage (as| if i'll|
|00002730| 20 65 76 65 72 20 61 63 | 74 75 61 6c 6c 79 20 67 | ever ac|tually g|
|00002740| 65 74 20 61 72 6f 75 6e | 64 20 74 6f 20 74 68 69 |et aroun|d to thi|
|00002750| 73 29 0d 3b 20 6f 20 20 | 75 73 65 20 61 20 64 79 |s).; o |use a dy|
|00002760| 6e 61 6d 69 63 61 6c 6c | 79 2d 62 75 69 6c 74 20 |namicall|y-built |
|00002770| 74 61 62 6c 65 20 74 6f | 20 61 76 6f 69 64 20 74 |table to| avoid t|
|00002780| 68 65 20 6d 75 6c 74 69 | 70 6c 79 20 69 6e 73 74 |he multi|ply inst|
|00002790| 72 75 63 74 69 6f 6e 20 | 69 6e 20 74 68 65 20 67 |ruction |in the g|
|000027a0| 65 6e 65 72 61 6c 20 63 | 61 73 65 2e 0d 3b 20 20 |eneral c|ase..; |
|000027b0| 20 20 74 68 69 73 20 6d | 61 79 20 6e 6f 74 20 62 | this m|ay not b|
|000027c0| 65 20 61 20 67 72 65 61 | 74 20 69 64 65 61 20 73 |e a grea|t idea s|
|000027d0| 69 6e 63 65 20 6e 6f 74 | 20 65 76 65 72 79 6f 6e |ince not| everyon|
|000027e0| 65 20 63 61 6e 20 61 66 | 66 6f 72 64 20 74 68 61 |e can af|ford tha|
|000027f0| 74 20 6d 75 63 68 20 73 | 70 61 63 65 2e 0d 3b 20 |t much s|pace..; |
|00002800| 6f 20 20 61 64 61 70 74 | 20 74 68 65 20 72 6f 75 |o adapt| the rou|
|00002810| 74 69 6e 65 20 74 6f 20 | 64 6f 20 74 72 61 6e 73 |tine to |do trans|
|00002820| 66 65 72 20 6d 6f 64 65 | 73 2e 20 20 65 73 70 65 |fer mode|s. espe|
|00002830| 63 69 61 6c 6c 79 20 70 | 61 74 74 65 72 6e 20 6d |cially p|attern m|
|00002840| 6f 64 65 73 2c 20 77 69 | 74 68 20 6e 6f 20 73 6f |odes, wi|th no so|
|00002850| 75 72 63 65 2e 0d 3b 20 | 20 20 20 69 74 27 64 20 |urce..; | it'd |
|00002860| 72 75 6e 20 73 69 67 6e | 69 66 69 63 61 6e 74 6c |run sign|ificantl|
|00002870| 79 20 66 61 73 74 65 72 | 20 64 6f 69 6e 67 20 61 |y faster| doing a|
|00002880| 20 66 69 6c 6c 20 6f 66 | 20 6a 75 73 74 20 62 6c | fill of| just bl|
|00002890| 61 63 6b 20 6f 72 20 77 | 68 69 74 65 21 09 20 61 |ack or w|hite!. a|
|000028a0| 6e 64 20 70 61 74 58 6f | 72 0d 3b 20 20 20 20 77 |nd patXo|r.; w|
|000028b0| 6f 75 6c 64 20 62 65 20 | 70 72 65 74 74 79 20 63 |ould be |pretty c|
|000028c0| 6f 6f 6c 20 74 6f 6f 20 | 28 73 65 65 20 61 6c 73 |ool too |(see als|
|000028d0| 6f 20 74 68 65 20 58 4f | 52 20 69 64 65 61 20 62 |o the XO|R idea b|
|000028e0| 65 6c 6f 77 29 2e 0d 3b | 20 6f 20 20 63 6f 6e 73 |elow)..;| o cons|
|000028f0| 69 64 65 72 20 61 20 66 | 72 6f 6e 74 2d 65 6e 64 |ider a f|ront-end|
|00002900| 20 77 68 69 63 68 20 64 | 6f 65 73 20 63 6c 69 70 | which d|oes clip|
|00002910| 70 69 6e 67 20 28 6a 75 | 73 74 20 6c 69 6b 65 20 |ping (ju|st like |
|00002920| 63 6f 70 79 42 69 74 73 | 29 20 62 79 3a 0d 3b 20 |copyBits|) by:.; |
|00002930| 20 20 20 20 20 20 2d 20 | 61 6c 6c 6f 63 61 74 65 | - |allocate|
|00002940| 20 79 65 74 20 61 6e 6f | 74 68 65 72 20 6f 66 66 | yet ano|ther off|
|00002950| 73 63 72 65 65 6e 20 62 | 69 74 6d 61 70 2c 20 77 |screen b|itmap, w|
|00002960| 68 6f 73 65 20 62 6f 75 | 6e 64 73 20 61 72 65 20 |hose bou|nds are |
|00002970| 74 68 65 20 69 6e 74 65 | 72 73 65 63 74 69 6f 6e |the inte|rsection|
|00002980| 20 6f 66 0d 3b 09 20 20 | 74 68 65 20 64 65 73 74 | of.;. |the dest|
|00002990| 69 6e 61 74 69 6f 6e 20 | 72 65 63 74 20 77 69 74 |ination |rect wit|
|000029a0| 68 20 74 68 65 20 62 6f | 75 6e 64 69 6e 67 20 62 |h the bo|unding b|
|000029b0| 6f 78 20 6f 66 20 74 68 | 65 20 64 65 73 74 69 6e |ox of th|e destin|
|000029c0| 61 74 69 6f 6e 27 73 20 | 63 6c 69 70 70 69 6e 67 |ation's |clipping|
|000029d0| 20 72 67 6e 2e 0d 3b 20 | 20 20 20 20 20 20 2d 20 | rgn..; | - |
|000029e0| 63 6f 70 79 20 66 72 6f | 6d 20 74 68 65 20 64 65 |copy fro|m the de|
|000029f0| 73 74 69 6e 61 74 69 6f | 6e 27 73 20 62 69 74 6d |stinatio|n's bitm|
|00002a00| 61 70 20 69 6e 74 6f 20 | 74 68 65 20 74 65 6d 70 |ap into |the temp|
|00002a10| 6f 72 61 72 79 20 62 69 | 74 6d 61 70 2e 0d 3b 20 |orary bi|tmap..; |
|00002a20| 20 20 20 20 20 20 2d 20 | 64 6f 20 61 20 63 6f 70 | - |do a cop|
|00002a30| 79 42 69 74 73 20 66 72 | 6f 6d 20 74 68 65 20 73 |yBits fr|om the s|
|00002a40| 6f 75 72 63 65 20 74 6f | 20 74 68 65 20 74 65 6d |ource to| the tem|
|00002a50| 70 2c 20 77 69 74 68 20 | 74 68 65 20 72 65 71 75 |p, with |the requ|
|00002a60| 65 73 74 65 64 20 6d 61 | 73 6b 69 6e 67 20 72 65 |ested ma|sking re|
|00002a70| 67 69 6f 6e 2e 0d 3b 20 | 20 20 20 20 20 20 2d 20 |gion..; | - |
|00002a80| 64 69 73 73 6f 6c 76 65 | 20 66 72 6f 6d 20 74 68 |dissolve| from th|
|00002a90| 65 20 74 65 6d 70 20 74 | 6f 20 74 68 65 20 64 65 |e temp t|o the de|
|00002aa0| 73 74 69 6e 61 74 69 6f | 6e 2c 20 74 68 75 73 20 |stinatio|n, thus |
|00002ab0| 61 63 74 75 61 6c 6c 79 | 20 64 69 73 73 6f 6c 76 |actually| dissolv|
|00002ac0| 69 6e 67 20 74 68 61 74 | 20 77 68 6f 6c 65 0d 3b |ing that| whole.;|
|00002ad0| 09 20 20 72 65 63 74 2c | 20 62 75 74 20 63 68 61 |. rect,| but cha|
|00002ae0| 6e 67 69 6e 67 20 6f 6e | 6c 79 20 74 68 65 20 63 |nging on|ly the c|
|00002af0| 6c 69 70 70 65 64 20 73 | 74 75 66 66 2e 0d 3b 20 |lipped s|tuff..; |
|00002b00| 6f 20 20 61 20 6e 69 66 | 74 79 20 77 61 79 20 74 |o a nif|ty way t|
|00002b10| 6f 20 73 70 65 65 64 20 | 75 70 20 74 68 69 6e 67 |o speed |up thing|
|00002b20| 73 20 77 6f 75 6c 64 20 | 62 65 20 74 6f 20 58 4f |s would |be to XO|
|00002b30| 52 20 74 68 65 20 64 65 | 73 74 69 6e 61 74 69 6f |R the de|stinatio|
|00002b40| 6e 20 69 6e 74 6f 20 74 | 68 65 20 73 6f 75 72 63 |n into t|he sourc|
|00002b50| 65 20 5b 73 69 63 21 5d | 2e 0d 3b 20 20 20 20 74 |e [sic!]|..; t|
|00002b60| 68 65 6e 20 74 68 65 20 | 6d 61 69 6e 20 6c 6f 6f |hen the |main loo|
|00002b70| 70 20 64 6f 65 73 6e 27 | 74 20 68 61 76 65 20 74 |p doesn'|t have t|
|00002b80| 6f 20 63 6f 70 79 20 61 | 20 62 69 74 3b 20 69 74 |o copy a| bit; it|
|00002b90| 20 6a 75 73 74 20 74 65 | 73 74 73 20 69 66 20 74 | just te|sts if t|
|00002ba0| 68 65 20 62 69 74 20 69 | 73 20 4f 4e 20 69 6e 20 |he bit i|s ON in |
|00002bb0| 74 68 65 0d 3b 20 20 20 | 20 61 6c 74 65 72 65 64 |the.; | altered|
|00002bc0| 20 73 6f 75 72 63 65 20 | 62 69 74 6d 61 70 20 61 | source |bitmap a|
|00002bd0| 6e 64 2c 20 69 66 20 73 | 6f 2c 20 54 4f 47 47 4c |nd, if s|o, TOGGL|
|00002be0| 45 53 20 69 74 20 69 6e | 20 74 68 65 20 64 65 73 |ES it in| the des|
|00002bf0| 74 69 6e 61 74 69 6f 6e | 2e 20 20 28 69 2e 65 2e |tination|. (i.e.|
|00002c00| 2c 20 69 74 20 64 6f 65 | 73 20 61 0d 3b 20 20 20 |, it doe|s a.; |
|00002c10| 20 73 72 63 58 6f 72 20 | 6f 70 65 72 61 74 69 6f | srcXor |operatio|
|00002c20| 6e 29 2e 09 20 74 6f 20 | 72 65 70 61 69 72 20 74 |n).. to |repair t|
|00002c30| 68 65 20 73 6f 75 72 63 | 65 20 62 69 74 6d 61 70 |he sourc|e bitmap|
|00002c40| 2c 20 61 20 74 68 69 72 | 64 20 58 4f 52 20 66 72 |, a thir|d XOR fr|
|00002c50| 6f 6d 20 74 68 65 20 64 | 65 73 74 69 6e 61 74 69 |om the d|estinati|
|00002c60| 6f 6e 20 74 6f 0d 3b 20 | 20 20 20 74 68 65 20 73 |on to.; | the s|
|00002c70| 6f 75 72 63 65 20 73 68 | 6f 75 6c 64 20 64 6f 20 |ource sh|ould do |
|00002c80| 69 74 20 5b 61 6e 79 20 | 6f 6c 64 2d 74 69 6d 65 |it [any |old-time|
|00002c90| 72 20 77 69 6c 6c 20 72 | 65 63 6f 67 6e 69 7a 65 |r will r|ecognize|
|00002ca0| 20 74 68 69 73 20 74 72 | 69 70 6c 65 20 58 4f 52 | this tr|iple XOR|
|00002cb0| 20 61 73 20 74 68 65 20 | 62 65 73 74 0d 3b 20 20 | as the |best.; |
|00002cc0| 20 20 77 61 79 20 74 6f | 20 73 77 61 70 20 74 77 | way to| swap tw|
|00002cd0| 6f 20 72 65 67 69 73 74 | 65 72 73 2e 5d 20 20 74 |o regist|ers.] t|
|00002ce0| 68 65 20 74 72 69 63 6b | 20 69 73 20 6d 61 6b 69 |he trick| is maki|
|00002cf0| 6e 67 20 74 68 65 20 69 | 6e 76 69 73 69 62 6c 65 |ng the i|nvisible|
|00002d00| 20 58 4f 52 20 72 75 6e | 20 73 6f 20 66 61 73 74 | XOR run| so fast|
|00002d10| 20 74 68 61 74 0d 3b 20 | 20 20 20 74 68 65 20 74 | that.; | the t|
|00002d20| 69 6d 65 20 74 6f 20 64 | 6f 20 69 74 20 69 73 20 |ime to d|o it is |
|00002d30| 6c 65 73 73 20 74 68 61 | 6e 20 74 68 65 20 73 61 |less tha|n the sa|
|00002d40| 76 69 6e 67 73 20 69 6e | 20 74 68 65 20 76 69 73 |vings in| the vis|
|00002d50| 69 62 6c 65 20 70 61 72 | 74 2e 20 20 6f 72 20 70 |ible par|t. or p|
|00002d60| 65 72 68 61 70 73 20 74 | 68 65 20 62 61 74 63 68 |erhaps t|he batch|
|00002d70| 0d 3b 20 20 20 20 58 4f | 52 73 20 63 6f 75 6c 64 |.; XO|Rs could|
|00002d80| 20 62 65 20 64 6f 6e 65 | 20 69 6e 20 73 70 61 72 | be done| in spar|
|00002d90| 65 2d 74 69 6d 65 2e 2e | 2e 0d 3b 20 6f 20 20 69 |e-time..|..; o i|
|00002da0| 6d 70 6c 65 6d 65 6e 74 | 20 61 20 70 61 72 74 69 |mplement| a parti|
|00002db0| 61 6c 20 64 69 73 73 6f | 6c 76 65 2e 20 20 74 68 |al disso|lve. th|
|00002dc0| 69 73 20 77 6f 75 6c 64 | 20 6c 65 74 20 61 6c 65 |is would| let ale|
|00002dd0| 78 20 61 6e 69 6d 61 74 | 65 20 73 74 61 72 20 74 |x animat|e star t|
|00002de0| 72 65 6b 2d 73 74 79 6c | 65 20 74 65 6c 65 70 6f |rek-styl|e telepo|
|00002df0| 72 74 69 6e 67 2e 0d 3b | 20 20 20 20 74 68 65 72 |rting..;| ther|
|00002e00| 65 20 61 72 65 20 61 20 | 6c 6f 74 20 6f 66 20 77 |e are a |lot of w|
|00002e10| 61 79 73 20 74 6f 20 64 | 6f 20 74 68 69 73 2e 20 |ays to d|o this. |
|00002e20| 20 74 68 65 20 65 61 73 | 69 65 73 74 20 6d 69 67 | the eas|iest mig|
|00002e30| 68 74 20 62 65 20 74 6f | 20 69 6e 63 6c 75 64 65 |ht be to| include|
|00002e40| 20 61 20 63 6f 75 6e 74 | 65 72 20 69 6e 20 74 68 | a count|er in th|
|00002e50| 65 0d 3b 20 20 20 20 6c | 6f 6f 70 20 28 22 61 20 |e.; l|oop ("a |
|00002e60| 72 65 67 69 73 74 65 72 | 21 09 20 6d 79 20 6b 69 |register|!. my ki|
|00002e70| 6e 67 64 6f 6d 20 66 6f | 72 20 61 20 72 65 67 69 |ngdom fo|r a regi|
|00002e80| 73 74 65 72 21 22 29 2e | 20 20 61 6c 74 65 72 6e |ster!").| altern|
|00002e90| 61 74 65 6c 79 2c 20 77 | 65 20 63 6f 75 6c 64 20 |ately, w|e could |
|00002ea0| 61 73 73 75 6d 65 20 74 | 68 61 74 0d 3b 20 20 20 |assume t|hat.; |
|00002eb0| 20 74 68 65 20 6c 69 73 | 74 20 6f 66 20 73 74 61 | the lis|t of sta|
|00002ec0| 72 74 69 6e 67 20 61 6e | 64 20 65 6e 64 69 6e 67 |rting an|d ending|
|00002ed0| 20 70 6f 69 6e 74 73 20 | 63 6f 75 6c 64 20 62 65 | points |could be|
|00002ee0| 20 6c 69 6d 69 74 65 64 | 2c 20 61 6c 6c 6f 77 69 | limited|, allowi|
|00002ef0| 6e 67 20 61 20 74 61 62 | 6c 65 2d 62 61 73 65 64 |ng a tab|le-based|
|00002f00| 20 73 79 73 74 65 6d 2e | 0d 3b 20 20 20 20 74 68 | system.|.; th|
|00002f10| 69 73 20 69 73 20 73 6f | 6d 65 74 68 69 6e 67 20 |is is so|mething |
|00002f20| 77 6f 72 74 68 20 6c 6f | 6f 6b 69 6e 67 20 69 6e |worth lo|oking in|
|00002f30| 74 6f 2c 20 62 75 74 20 | 63 6f 75 6c 64 20 62 65 |to, but |could be|
|00002f40| 20 72 65 61 6c 20 64 69 | 66 66 69 63 75 6c 74 2e | real di|fficult.|
|00002f50| 0d 3b 20 6f 20 20 6c 6f | 6f 6b 20 61 74 20 72 65 |.; o lo|ok at re|
|00002f60| 61 72 72 61 6e 67 69 6e | 67 20 69 6e 73 74 72 75 |arrangin|g instru|
|00002f70| 63 74 69 6f 6e 73 20 73 | 6f 20 43 50 55 2d 69 6e |ctions s|o CPU-in|
|00002f80| 74 65 6e 73 69 76 65 20 | 6f 6e 65 73 20 61 72 65 |tensive |ones are|
|00002f90| 6e 27 74 20 67 72 6f 75 | 70 65 64 2c 20 61 6c 6c |n't grou|ped, all|
|00002fa0| 6f 77 69 6e 67 20 75 73 | 20 74 6f 0d 3b 20 20 20 |owing us| to.; |
|00002fb0| 20 73 6e 65 61 6b 20 69 | 6e 20 62 65 74 77 65 65 | sneak i|n betwee|
|00002fc0| 6e 20 76 69 64 65 6f 20 | 63 79 63 6c 65 73 20 6d |n video |cycles m|
|00002fd0| 6f 72 65 20 6f 66 74 65 | 6e 2e 0d 3b 20 6f 20 20 |ore ofte|n..; o |
|00002fe0| 61 64 64 20 73 6f 6d 65 | 20 72 65 61 6c 20 65 72 |add some| real er|
|00002ff0| 72 6f 72 2d 68 61 6e 64 | 6c 69 6e 67 2e 20 20 68 |ror-hand|ling. h|
|00003000| 6f 77 20 73 68 6f 75 6c | 64 20 77 65 20 64 6f 20 |ow shoul|d we do |
|00003010| 74 68 69 73 3f 20 20 72 | 65 74 75 72 6e 20 61 20 |this? r|eturn a |
|00003020| 73 74 61 74 75 73 3f 20 | 20 66 61 75 6c 74 3f 20 |status? | fault? |
|00003030| 20 77 65 0d 3b 20 20 20 | 20 63 6f 75 6c 64 20 61 | we.; | could a|
|00003040| 6c 73 6f 20 72 65 74 75 | 72 6e 20 69 6e 66 6f 20 |lso retu|rn info |
|00003050| 74 6f 20 6f 75 72 20 63 | 61 6c 6c 65 72 20 6f 6e |to our c|aller on|
|00003060| 20 77 68 69 63 68 20 6f | 66 20 74 68 65 20 74 68 | which o|f the th|
|00003070| 72 65 65 20 6c 6f 6f 70 | 73 20 67 6f 74 20 75 73 |ree loop|s got us|
|00003080| 65 64 2c 20 73 6f 20 74 | 68 65 79 20 6b 6e 6f 77 |ed, so t|hey know|
|00003090| 0d 3b 20 20 20 20 74 68 | 65 79 27 72 65 20 67 65 |.; th|ey're ge|
|000030a0| 74 74 69 6e 67 20 74 68 | 65 20 73 70 65 65 64 20 |tting th|e speed |
|000030b0| 74 68 65 79 20 77 61 6e | 74 2e 0d 3b 20 6f 20 20 |they wan|t..; o |
|000030c0| 64 6f 6e 27 74 20 75 73 | 65 20 74 68 65 20 42 49 |don't us|e the BI|
|000030d0| 54 57 49 44 54 48 20 72 | 6f 75 74 69 6e 65 20 74 |TWIDTH r|outine t|
|000030e0| 6f 20 74 65 73 74 20 66 | 6f 72 20 65 78 61 63 74 |o test f|or exact|
|000030f0| 20 70 6f 77 65 72 73 20 | 6f 66 20 74 77 6f 20 69 | powers |of two i|
|00003100| 6e 20 4d 55 4c 43 48 4b | 2e 20 20 61 20 6e 75 6d |n MULCHK|. a num|
|00003110| 62 65 72 20 58 5d 0d 3b | 20 20 20 20 69 73 20 61 |ber X].;| is a|
|00003120| 6e 20 65 78 61 63 74 20 | 70 6f 77 65 72 20 6f 66 |n exact |power of|
|00003130| 20 74 77 6f 20 69 66 20 | 28 78 20 26 20 2d 78 29 | two if |(x & -x)|
|00003140| 20 65 71 75 61 6c 73 20 | 78 2e 0d 3b 0d 3b 0d 3b | equals |x..;.;.;|
|00003150| 0d 3b 20 20 20 20 20 20 | 20 2d 2d 20 65 6e 64 20 |.; | -- end |
|00003160| 6f 66 20 69 6e 74 72 6f | 64 75 63 74 69 6f 6e 3b |of intro|duction;|
|00003170| 20 72 65 61 6c 20 73 74 | 75 66 66 20 73 74 61 72 | real st|uff star|
|00003180| 74 73 20 68 65 72 65 20 | 2d 2d 0d 3b 0d 3b 0d 3b |ts here |--.;.;.;|
|00003190| 0d 3b 20 44 49 53 53 42 | 49 54 53 20 53 55 42 52 |.; DISSB|ITS SUBR|
|000031a0| 4f 55 54 49 4e 45 0d 3b | 20 4d 44 53 20 41 53 53 |OUTINE.;| MDS ASS|
|000031b0| 45 4d 42 4c 45 52 20 56 | 45 52 53 49 4f 4e 0d 3b |EMBLER V|ERSION.;|
|000031c0| 20 43 6f 6e 76 65 72 74 | 65 64 20 62 79 20 44 61 | Convert|ed by Da|
|000031d0| 76 69 64 20 45 2e 20 53 | 6d 69 74 68 20 66 6f 72 |vid E. S|mith for|
|000031e0| 20 4d 61 63 54 75 74 6f | 72 2e 0d 3b 0d 3b 0d 09 | MacTuto|r..;.;..|
|000031f0| 78 64 65 66 09 64 69 73 | 73 42 69 74 73 0d 09 0d |xdef.dis|sBits...|
|00003200| 09 49 6e 63 6c 75 64 65 | 20 51 75 69 63 6b 45 71 |.Include| QuickEq|
|00003210| 75 2e 44 09 3b 20 4d 44 | 53 20 74 6f 6f 6c 62 6f |u.D.; MD|S toolbo|
|00003220| 78 20 65 71 75 61 74 65 | 73 20 61 6e 64 20 74 72 |x equate|s and tr|
|00003230| 61 70 73 0d 09 49 6e 63 | 6c 75 64 65 20 53 79 73 |aps..Inc|lude Sys|
|00003240| 45 71 75 2e 44 0d 09 49 | 6e 63 6c 75 64 65 20 54 |Equ.D..I|nclude T|
|00003250| 6f 6f 6c 45 71 75 2e 44 | 0d 09 49 6e 63 6c 75 64 |oolEqu.D|..Includ|
|00003260| 65 20 4d 61 63 54 72 61 | 70 73 2e 44 0d 0d 09 4d |e MacTra|ps.D...M|
|00003270| 41 43 52 4f 20 2e 65 71 | 75 20 3d 20 65 71 75 7c |ACRO .eq|u = equ||
|00003280| 09 3b 20 63 6f 6e 76 65 | 72 74 20 4c 69 73 61 20 |.; conve|rt Lisa |
|00003290| 61 73 73 65 6d 62 6c 65 | 72 20 73 74 75 66 66 20 |assemble|r stuff |
|000032a0| 74 6f 20 4d 44 53 20 4d | 61 63 0d 09 4d 41 43 52 |to MDS M|ac..MACR|
|000032b0| 4f 20 5f 68 69 64 65 63 | 75 72 73 20 3d 20 5f 48 |O _hidec|urs = _H|
|000032c0| 69 64 65 43 75 72 73 6f | 72 7c 0d 09 4d 41 43 52 |ideCurso|r|..MACR|
|000032d0| 4f 20 5f 73 68 6f 77 63 | 75 72 73 20 3d 20 5f 53 |O _showc|urs = _S|
|000032e0| 68 6f 77 43 75 72 73 6f | 72 7c 0d 09 0d 3b 0d 3b |howCurso|r|...;.;|
|000032f0| 20 64 65 66 69 6e 69 74 | 69 6f 6e 73 20 6f 66 20 | definit|ions of |
|00003300| 74 68 65 20 22 6f 75 72 | 73 22 20 72 65 63 6f 72 |the "our|s" recor|
|00003310| 64 3a 20 74 68 69 73 20 | 73 74 72 75 63 74 75 72 |d: this |structur|
|00003320| 65 2c 20 6f 66 20 77 68 | 69 63 68 20 74 68 65 72 |e, of wh|ich ther|
|00003330| 65 20 61 72 65 20 74 77 | 6f 20 63 6f 70 69 65 73 |e are tw|o copies|
|00003340| 20 69 6e 0d 3b 20 6f 75 | 72 20 73 74 61 63 6b 20 | in.; ou|r stack |
|00003350| 66 72 61 6d 65 2c 20 69 | 73 20 61 20 73 6f 72 74 |frame, i|s a sort|
|00003360| 20 6f 66 20 62 69 74 6d | 61 70 3a 0d 3b 0d 0d 6f | of bitm|ap:.;..o|
|00003370| 52 6f 77 73 20 20 20 2e | 65 71 75 20 30 09 09 09 |Rows .|equ 0...|
|00003380| 20 20 20 20 20 20 20 20 | 3b 20 28 77 6f 72 64 29 | |; (word)|
|00003390| 20 6e 75 6d 62 65 72 20 | 6f 66 20 6c 61 73 74 20 | number |of last |
|000033a0| 72 6f 77 20 28 66 69 72 | 73 74 20 69 73 20 30 29 |row (fir|st is 0)|
|000033b0| 0d 6f 43 6f 6c 73 20 20 | 20 2e 65 71 75 20 6f 52 |.oCols | .equ oR|
|000033c0| 6f 77 73 2b 32 09 09 20 | 20 20 20 20 20 20 20 3b |ows+2.. | ;|
|000033d0| 20 28 77 6f 72 64 29 20 | 6e 75 6d 62 65 72 20 6f | (word) |number o|
|000033e0| 66 20 6c 61 73 74 20 63 | 6f 6c 75 6d 6e 20 28 66 |f last c|olumn (f|
|000033f0| 69 72 73 74 20 69 73 20 | 30 29 0d 6f 4c 62 69 74 |irst is |0).oLbit|
|00003400| 73 20 20 2e 65 71 75 20 | 6f 43 6f 6c 73 2b 32 09 |s .equ |oCols+2.|
|00003410| 09 20 20 20 20 20 20 20 | 20 3b 20 28 77 6f 72 64 |. | ; (word|
|00003420| 29 20 73 69 7a 65 20 6f | 66 20 6c 65 66 74 20 6d |) size o|f left m|
|00003430| 61 72 67 69 6e 20 77 69 | 74 68 69 6e 20 31 73 74 |argin wi|thin 1st|
|00003440| 20 62 79 74 65 0d 6f 53 | 74 72 69 64 65 20 2e 65 | byte.oS|tride .e|
|00003450| 71 75 20 6f 4c 62 69 74 | 73 2b 32 09 09 20 20 20 |qu oLbit|s+2.. |
|00003460| 20 20 20 20 20 3b 20 28 | 77 6f 72 64 29 20 73 74 | ; (|word) st|
|00003470| 72 69 64 65 20 69 6e 20 | 6d 65 6d 6f 72 79 20 66 |ride in |memory f|
|00003480| 72 6f 6d 20 72 6f 77 20 | 74 6f 20 72 6f 77 0d 6f |rom row |to row.o|
|00003490| 42 61 73 65 20 20 20 2e | 65 71 75 20 6f 53 74 72 |Base .|equ oStr|
|000034a0| 69 64 65 2b 32 09 09 20 | 20 20 20 20 20 20 20 3b |ide+2.. | ;|
|000034b0| 20 28 6c 6f 6e 67 29 20 | 62 61 73 65 20 61 64 64 | (long) |base add|
|000034c0| 72 65 73 73 20 6f 66 20 | 62 69 74 6d 61 70 0d 0d |ress of |bitmap..|
|000034d0| 6f 73 69 7a 65 20 20 20 | 2e 65 71 75 20 6f 42 61 |osize |.equ oBa|
|000034e0| 73 65 2b 34 09 09 20 20 | 20 20 20 20 20 20 3b 20 |se+4.. | ; |
|000034f0| 73 69 7a 65 2c 20 69 6e | 20 62 79 74 65 73 2c 20 |size, in| bytes, |
|00003500| 6f 66 20 22 6f 75 72 73 | 22 20 72 65 63 6f 72 64 |of "ours|" record|
|00003510| 0d 0d 3b 0d 3b 20 73 74 | 61 63 6b 20 66 72 61 6d |..;.; st|ack fram|
|00003520| 65 20 65 6c 65 6d 65 6e | 74 73 3a 0d 3b 0d 0d 73 |e elemen|ts:.;..s|
|00003530| 72 63 4f 75 72 73 20 2e | 65 71 75 20 2d 6f 73 69 |rcOurs .|equ -osi|
|00003540| 7a 65 09 09 20 20 20 20 | 20 20 20 20 3b 20 28 6f |ze.. | ; (o|
|00003550| 73 69 7a 65 29 20 6f 75 | 72 20 76 69 65 77 20 6f |size) ou|r view o|
|00003560| 66 20 73 6f 75 72 63 65 | 20 62 69 74 73 0d 64 73 |f source| bits.ds|
|00003570| 74 4f 75 72 73 20 2e 65 | 71 75 20 73 72 63 4f 75 |tOurs .e|qu srcOu|
|00003580| 72 73 2d 6f 73 69 7a 65 | 09 20 20 20 20 20 20 20 |rs-osize|. |
|00003590| 20 3b 20 28 6f 73 69 7a | 65 29 20 6f 75 72 20 76 | ; (osiz|e) our v|
|000035a0| 69 65 77 20 6f 66 20 74 | 61 72 67 65 74 20 62 69 |iew of t|arget bi|
|000035b0| 74 73 0d 0d 73 66 6c 61 | 73 74 20 20 2e 65 71 75 |ts..sfla|st .equ|
|000035c0| 20 64 73 74 4f 75 72 73 | 09 09 20 20 20 20 20 20 | dstOurs|.. |
|000035d0| 20 20 3b 20 72 65 6c 61 | 74 69 76 65 20 61 64 64 | ; rela|tive add|
|000035e0| 72 65 73 73 20 6f 66 20 | 6c 61 73 74 20 73 2e 66 |ress of |last s.f|
|000035f0| 2e 20 6d 65 6d 62 65 72 | 0d 73 66 73 69 7a 65 20 |. member|.sfsize |
|00003600| 20 2e 65 71 75 20 2d 73 | 66 6c 61 73 74 09 09 20 | .equ -s|flast.. |
|00003610| 20 20 20 20 20 20 20 3b | 20 73 69 7a 65 20 6f 66 | ;| size of|
|00003620| 20 73 2e 66 2e 20 66 6f | 72 20 4c 49 4e 4b 20 28 | s.f. fo|r LINK (|
|00003630| 6d 75 73 74 20 62 65 20 | 45 56 45 4e 21 29 0d 3b |must be |EVEN!).;|
|00003640| 0d 3b 20 20 20 20 20 20 | 20 70 61 72 61 6d 65 74 |.; | paramet|
|00003650| 65 72 20 6f 66 66 73 65 | 74 73 20 66 72 6f 6d 20 |er offse|ts from |
|00003660| 74 68 65 20 73 74 61 63 | 6b 20 66 72 61 6d 65 20 |the stac|k frame |
|00003670| 70 6f 69 6e 74 65 72 2c | 20 41 36 3a 0d 3b 20 20 |pointer,| A6:.; |
|00003680| 20 20 20 20 20 6c 61 73 | 74 20 70 61 72 61 6d 65 | las|t parame|
|00003690| 74 65 72 20 69 73 20 61 | 62 6f 76 65 20 72 65 74 |ter is a|bove ret|
|000036a0| 75 72 6e 20 61 64 64 72 | 65 73 73 20 61 6e 64 20 |urn addr|ess and |
|000036b0| 6f 6c 64 20 73 2e 66 2e | 0d 3b 0d 0d 64 52 70 74 |old s.f.|.;..dRpt|
|000036c0| 72 20 20 20 2e 65 71 75 | 20 34 2b 34 09 09 20 20 |r .equ| 4+4.. |
|000036d0| 20 20 20 20 20 20 3b 20 | 5e 64 65 73 74 69 6e 61 | ; |^destina|
|000036e0| 74 69 6f 6e 20 72 65 63 | 74 61 6e 67 6c 65 0d 73 |tion rec|tangle.s|
|000036f0| 52 70 74 72 20 20 20 2e | 65 71 75 20 64 52 70 74 |Rptr .|equ dRpt|
|00003700| 72 2b 34 09 09 20 20 20 | 20 20 20 20 20 3b 20 5e |r+4.. | ; ^|
|00003710| 73 6f 75 72 63 65 20 72 | 65 63 74 61 6e 67 6c 65 |source r|ectangle|
|00003720| 0d 64 42 70 74 72 20 20 | 20 2e 65 71 75 20 73 52 |.dBptr | .equ sR|
|00003730| 70 74 72 2b 34 09 09 20 | 20 20 20 20 20 20 20 3b |ptr+4.. | ;|
|00003740| 20 5e 64 65 73 74 69 6e | 61 74 69 6f 6e 20 62 69 | ^destin|ation bi|
|00003750| 74 4d 61 70 0d 73 42 70 | 74 72 20 20 20 2e 65 71 |tMap.sBp|tr .eq|
|00003760| 75 20 64 42 70 74 72 2b | 34 09 09 20 20 20 20 20 |u dBptr+|4.. |
|00003770| 20 20 20 3b 20 5e 73 6f | 75 72 63 65 20 62 69 74 | ; ^so|urce bit|
|00003780| 4d 61 70 0d 0d 70 6c 61 | 73 74 20 20 20 2e 65 71 |Map..pla|st .eq|
|00003790| 75 20 73 42 70 74 72 2b | 34 09 09 20 20 20 20 20 |u sBptr+|4.. |
|000037a0| 20 20 20 3b 20 61 64 64 | 72 65 73 73 20 6a 75 73 | ; add|ress jus|
|000037b0| 74 20 70 61 73 74 20 6c | 61 73 74 20 70 61 72 61 |t past l|ast para|
|000037c0| 6d 65 74 65 72 0d 0d 70 | 73 69 7a 65 20 20 20 2e |meter..p|size .|
|000037d0| 65 71 75 20 70 6c 61 73 | 74 2d 64 52 70 74 72 09 |equ plas|t-dRptr.|
|000037e0| 20 20 20 20 20 20 20 20 | 3b 20 73 69 7a 65 20 6f | |; size o|
|000037f0| 66 20 70 61 72 61 6d 65 | 74 65 72 73 2c 20 69 6e |f parame|ters, in|
|00003800| 20 62 79 74 65 73 0d 0d | 3b 0d 3b 20 65 6e 74 72 | bytes..|;.; entr|
|00003810| 61 6e 63 65 3a 20 73 65 | 74 20 75 70 20 61 20 73 |ance: se|t up a s|
|00003820| 74 61 63 6b 20 66 72 61 | 6d 65 2c 20 73 61 76 65 |tack fra|me, save|
|00003830| 20 73 6f 6d 65 20 72 65 | 67 69 73 74 65 72 73 2c | some re|gisters,|
|00003840| 20 68 69 64 65 20 74 68 | 65 20 63 75 72 73 6f 72 | hide th|e cursor|
|00003850| 2e 0d 3b 0d 0d 64 69 73 | 73 42 69 74 73 3a 09 09 |..;..dis|sBits:..|
|00003860| 20 20 20 20 20 20 20 20 | 3b 20 6d 61 69 6e 20 65 | |; main e|
|00003870| 6e 74 72 79 20 70 6f 69 | 6e 74 0d 0d 20 20 20 20 |ntry poi|nt.. |
|00003880| 20 20 20 20 6c 69 6e 6b | 20 41 36 2c 23 2d 73 66 | link| A6,#-sf|
|00003890| 73 69 7a 65 09 20 20 20 | 20 20 20 20 20 3b 20 73 |size. | ; s|
|000038a0| 65 74 20 75 70 20 61 20 | 73 74 61 63 6b 20 66 72 |et up a |stack fr|
|000038b0| 61 6d 65 0d 20 20 20 20 | 20 20 20 20 6d 6f 76 65 |ame. | move|
|000038c0| 6d 2e 6c 20 44 33 2d 44 | 37 2f 41 32 2d 41 35 2c |m.l D3-D|7/A2-A5,|
|000038d0| 2d 28 53 50 29 20 20 20 | 20 20 20 20 3b 20 73 61 |-(SP) | ; sa|
|000038e0| 76 65 20 72 65 67 69 73 | 74 65 72 73 20 63 6f 6d |ve regis|ters com|
|000038f0| 70 69 6c 65 72 20 6d 61 | 79 20 6e 65 65 64 0d 20 |piler ma|y need. |
|00003900| 20 20 20 20 20 20 20 5f | 68 69 64 65 63 75 72 73 | _|hidecurs|
|00003910| 09 09 20 20 20 20 20 20 | 20 20 3b 20 64 6f 6e 27 |.. | ; don'|
|00003920| 74 20 6c 65 74 20 74 68 | 65 20 63 75 72 73 6f 72 |t let th|e cursor|
|00003930| 20 73 68 6f 77 20 66 6f | 72 20 6e 6f 77 0d 0d 3b | show fo|r now..;|
|00003940| 0d 3b 20 63 6f 6e 76 65 | 72 74 20 74 68 65 20 73 |.; conve|rt the s|
|00003950| 6f 75 72 63 65 20 61 6e | 64 20 64 65 73 74 69 6e |ource an|d destin|
|00003960| 61 74 69 6f 6e 20 62 69 | 74 6d 61 70 73 20 61 6e |ation bi|tmaps an|
|00003970| 64 20 72 65 63 74 61 6e | 67 6c 65 73 20 74 6f 20 |d rectan|gles to |
|00003980| 61 20 66 6f 72 6d 61 74 | 20 77 65 20 70 72 65 66 |a format| we pref|
|00003990| 65 72 2e 0d 3b 20 77 65 | 20 77 6f 6e 27 74 20 6c |er..; we| won't l|
|000039a0| 6f 6f 6b 20 61 74 20 74 | 68 65 73 65 20 70 61 72 |ook at t|hese par|
|000039b0| 61 6d 65 74 65 72 73 20 | 61 66 74 65 72 20 74 68 |ameters |after th|
|000039c0| 69 73 2e 0d 3b 0d 0d 20 | 20 20 20 20 20 20 20 6d |is..;.. | m|
|000039d0| 6f 76 65 2e 6c 20 73 42 | 70 74 72 28 41 36 29 2c |ove.l sB|ptr(A6),|
|000039e0| 41 30 09 20 20 20 20 20 | 20 20 20 3b 20 70 6f 69 |A0. | ; poi|
|000039f0| 6e 74 20 74 6f 20 73 6f | 75 72 63 65 20 62 69 74 |nt to so|urce bit|
|00003a00| 4d 61 70 0d 20 20 20 20 | 20 20 20 20 6d 6f 76 65 |Map. | move|
|00003a10| 2e 6c 20 73 52 70 74 72 | 28 41 36 29 2c 41 31 09 |.l sRptr|(A6),A1.|
|00003a20| 20 20 20 20 20 20 20 20 | 3b 20 61 6e 64 20 73 6f | |; and so|
|00003a30| 75 72 63 65 20 72 65 63 | 74 61 6e 67 6c 65 0d 20 |urce rec|tangle. |
|00003a40| 20 20 20 20 20 20 20 6c | 65 61 20 73 72 63 4f 75 | l|ea srcOu|
|00003a50| 72 73 28 41 36 29 2c 41 | 32 09 20 20 20 20 20 20 |rs(A6),A|2. |
|00003a60| 20 20 3b 20 61 6e 64 20 | 6f 75 72 20 73 6f 75 72 | ; and |our sour|
|00003a70| 63 65 20 73 74 72 75 63 | 74 75 72 65 0d 20 20 20 |ce struc|ture. |
|00003a80| 20 20 20 20 20 62 73 72 | 20 43 4f 4e 56 45 52 54 | bsr| CONVERT|
|00003a90| 09 09 20 20 20 20 20 20 | 20 20 3b 20 63 6f 6e 76 |.. | ; conv|
|00003aa0| 65 72 74 20 74 6f 20 6f | 75 72 20 66 6f 72 6d 61 |ert to o|ur forma|
|00003ab0| 74 0d 0d 20 20 20 20 20 | 20 20 20 6d 6f 76 65 2e |t.. | move.|
|00003ac0| 6c 20 64 42 70 74 72 28 | 41 36 29 2c 41 30 09 20 |l dBptr(|A6),A0. |
|00003ad0| 20 20 20 20 20 20 20 3b | 20 70 6f 69 6e 74 20 74 | ;| point t|
|00003ae0| 6f 20 64 65 73 74 69 6e | 61 74 69 6f 6e 20 62 69 |o destin|ation bi|
|00003af0| 74 4d 61 70 0d 20 20 20 | 20 20 20 20 20 6d 6f 76 |tMap. | mov|
|00003b00| 65 2e 6c 20 64 52 70 74 | 72 28 41 36 29 2c 41 31 |e.l dRpt|r(A6),A1|
|00003b10| 09 20 20 20 20 20 20 20 | 20 3b 20 61 6e 64 20 72 |. | ; and r|
|00003b20| 65 63 74 61 6e 67 6c 65 | 0d 20 20 20 20 20 20 20 |ectangle|. |
|00003b30| 20 6c 65 61 20 64 73 74 | 4f 75 72 73 28 41 36 29 | lea dst|Ours(A6)|
|00003b40| 2c 41 32 09 20 20 20 20 | 20 20 20 20 3b 20 61 6e |,A2. | ; an|
|00003b50| 64 20 6f 75 72 20 73 74 | 72 75 63 74 75 72 65 0d |d our st|ructure.|
|00003b60| 20 20 20 20 20 20 20 20 | 62 73 72 20 43 4f 4e 56 | |bsr CONV|
|00003b70| 45 52 54 09 09 20 20 20 | 20 20 20 20 20 3b 20 63 |ERT.. | ; c|
|00003b80| 6f 6e 76 65 72 74 20 74 | 6f 20 6f 75 72 20 66 6f |onvert t|o our fo|
|00003b90| 72 6d 61 74 0d 0d 3b 0d | 3b 20 63 68 65 63 6b 20 |rmat..;.|; check |
|00003ba0| 74 68 61 74 20 74 68 65 | 20 72 65 63 74 61 6e 67 |that the| rectang|
|00003bb0| 6c 65 73 20 6d 61 74 63 | 68 20 69 6e 20 73 69 7a |les matc|h in siz|
|00003bc0| 65 2e 0d 3b 0d 20 20 20 | 20 20 20 20 20 6d 6f 76 |e..;. | mov|
|00003bd0| 65 2e 77 20 73 72 63 4f | 75 72 73 2b 6f 52 6f 77 |e.w srcO|urs+oRow|
|00003be0| 73 28 41 36 29 2c 44 30 | 20 20 20 20 20 3b 20 70 |s(A6),D0| ; p|
|00003bf0| 69 63 6b 20 75 70 20 74 | 68 65 20 6e 75 6d 62 65 |ick up t|he numbe|
|00003c00| 72 20 6f 66 20 72 6f 77 | 73 0d 20 20 20 20 20 20 |r of row|s. |
|00003c10| 20 20 63 6d 70 2e 77 20 | 64 73 74 4f 75 72 73 2b | cmp.w |dstOurs+|
|00003c20| 6f 52 6f 77 73 28 41 36 | 29 2c 44 30 20 20 20 20 |oRows(A6|),D0 |
|00003c30| 20 20 3b 20 73 61 6d 65 | 20 6e 75 6d 62 65 72 20 | ; same| number |
|00003c40| 6f 66 20 72 6f 77 73 3f | 0d 20 20 20 20 20 20 20 |of rows?|. |
|00003c50| 20 62 6e 65 20 45 52 52 | 4f 52 09 09 20 20 20 20 | bne ERR|OR.. |
|00003c60| 20 20 20 20 3b 20 6e 6f | 70 65 20 2d 2d 20 62 61 | ; no|pe -- ba|
|00003c70| 67 20 69 74 0d 0d 20 20 | 20 20 20 20 20 20 6d 6f |g it.. | mo|
|00003c80| 76 65 2e 77 20 73 72 63 | 4f 75 72 73 2b 6f 43 6f |ve.w src|Ours+oCo|
|00003c90| 6c 73 28 41 36 29 2c 44 | 30 20 20 20 20 20 3b 20 |ls(A6),D|0 ; |
|00003ca0| 63 68 65 63 6b 20 74 68 | 65 20 6e 75 6d 62 65 72 |check th|e number|
|00003cb0| 20 6f 66 20 63 6f 6c 75 | 6d 6e 73 0d 20 20 20 20 | of colu|mns. |
|00003cc0| 20 20 20 20 63 6d 70 2e | 77 20 64 73 74 4f 75 72 | cmp.|w dstOur|
|00003cd0| 73 2b 6f 43 6f 6c 73 28 | 41 36 29 2c 44 30 20 20 |s+oCols(|A6),D0 |
|00003ce0| 20 20 20 20 3b 20 73 61 | 6d 65 20 6e 75 6d 62 65 | ; sa|me numbe|
|00003cf0| 72 20 6f 66 20 63 6f 6c | 75 6d 6e 73 2c 20 74 6f |r of col|umns, to|
|00003d00| 6f 3f 0d 20 20 20 20 20 | 20 20 20 62 6e 65 20 45 |o?. | bne E|
|00003d10| 52 52 4f 52 09 09 20 20 | 20 20 20 20 20 20 3b 20 |RROR.. | ; |
|00003d20| 74 68 61 74 27 73 20 61 | 20 62 6f 7a 6f 20 6e 6f |that's a| bozo no|
|00003d30| 2d 6e 6f 0d 0d 3b 0d 3b | 20 66 69 67 75 72 65 20 |-no..;.;| figure |
|00003d40| 74 68 65 20 62 69 74 2d | 77 69 64 74 68 20 6e 65 |the bit-|width ne|
|00003d50| 65 64 65 64 20 74 6f 20 | 73 70 61 6e 20 74 68 65 |eded to |span the|
|00003d60| 20 63 6f 6c 75 6d 6e 73 | 2c 20 61 6e 64 20 74 68 | columns|, and th|
|00003d70| 65 20 72 6f 77 73 2e 0d | 3b 0d 0d 20 20 20 20 20 |e rows..|;.. |
|00003d80| 20 20 20 6d 6f 76 65 2e | 77 20 73 72 63 4f 75 72 | move.|w srcOur|
|00003d90| 73 2b 6f 43 6f 6c 73 28 | 41 36 29 2c 44 30 20 20 |s+oCols(|A6),D0 |
|00003da0| 20 20 20 3b 20 67 65 74 | 20 63 6f 75 6e 74 20 6f | ; get| count o|
|00003db0| 66 20 63 6f 6c 75 6d 6e | 73 0d 20 20 20 20 20 20 |f column|s. |
|00003dc0| 20 20 65 78 74 2e 6c 20 | 44 30 09 09 20 20 20 20 | ext.l |D0.. |
|00003dd0| 20 20 20 20 3b 20 6d 61 | 6b 65 20 69 74 20 61 20 | ; ma|ke it a |
|00003de0| 6c 6f 6e 67 77 6f 72 64 | 0d 20 20 20 20 20 20 20 |longword|. |
|00003df0| 20 62 73 72 20 4c 4f 47 | 32 09 09 20 20 20 20 20 | bsr LOG|2.. |
|00003e00| 20 20 20 3b 20 66 69 67 | 75 72 65 20 62 69 74 2d | ; fig|ure bit-|
|00003e10| 77 69 64 74 68 0d 20 20 | 20 20 20 20 20 20 6d 6f |width. | mo|
|00003e20| 76 65 2e 77 20 44 30 2c | 44 31 09 09 20 20 20 20 |ve.w D0,|D1.. |
|00003e30| 20 20 20 20 3b 20 73 65 | 74 20 61 73 69 64 65 20 | ; se|t aside |
|00003e40| 74 68 61 74 20 72 65 73 | 75 6c 74 0d 20 20 20 20 |that res|ult. |
|00003e50| 20 20 20 20 62 65 71 20 | 53 4d 41 4c 4c 09 09 20 | beq |SMALL.. |
|00003e60| 20 20 20 20 20 20 20 3b | 20 74 6f 6f 20 73 6d 61 | ;| too sma|
|00003e70| 6c 6c 3f 20 20 77 69 6d | 70 20 6f 75 74 20 61 6e |ll? wim|p out an|
|00003e80| 64 20 64 6f 20 69 74 20 | 77 69 74 68 20 63 6f 70 |d do it |with cop|
|00003e90| 79 42 69 74 73 0d 0d 20 | 20 20 20 20 20 20 20 6d |yBits.. | m|
|00003ea0| 6f 76 65 2e 77 20 73 72 | 63 4f 75 72 73 2b 6f 52 |ove.w sr|cOurs+oR|
|00003eb0| 6f 77 73 28 41 36 29 2c | 44 30 20 20 20 20 20 3b |ows(A6),|D0 ;|
|00003ec0| 20 67 65 74 20 63 6f 75 | 6e 74 20 6f 66 20 72 6f | get cou|nt of ro|
|00003ed0| 77 73 0d 20 20 20 20 20 | 20 20 20 65 78 74 2e 6c |ws. | ext.l|
|00003ee0| 20 44 30 09 09 20 20 20 | 20 20 20 20 20 3b 20 6d | D0.. | ; m|
|00003ef0| 61 6b 65 20 69 74 20 61 | 20 6c 6f 6e 67 77 6f 72 |ake it a| longwor|
|00003f00| 64 0d 20 20 20 20 20 20 | 20 20 62 73 72 20 4c 4f |d. | bsr LO|
|00003f10| 47 32 09 09 20 20 20 20 | 20 20 20 20 3b 20 61 67 |G2.. | ; ag|
|00003f20| 61 69 6e 2c 20 66 69 6e | 64 20 74 68 65 20 62 69 |ain, fin|d the bi|
|00003f30| 74 2d 77 69 64 74 68 0d | 20 20 20 20 20 20 20 20 |t-width.| |
|00003f40| 74 73 74 2e 77 20 44 30 | 09 09 20 20 20 20 20 20 |tst.w D0|.. |
|00003f50| 20 20 3b 20 69 73 20 74 | 68 65 20 72 65 73 75 6c | ; is t|he resul|
|00003f60| 74 20 7a 65 72 6f 3f 0d | 20 20 20 20 20 20 20 20 |t zero?.| |
|00003f70| 62 65 71 20 53 4d 41 4c | 4c 09 09 20 20 20 20 20 |beq SMAL|L.. |
|00003f80| 20 20 20 3b 20 69 66 20 | 73 6f 2c 20 6f 75 72 20 | ; if |so, our |
|00003f90| 61 6c 67 6f 72 69 74 68 | 6d 20 77 69 6c 6c 20 73 |algorith|m will s|
|00003fa0| 63 72 65 77 20 75 70 0d | 0d 3b 0d 3b 20 73 65 74 |crew up.|.;.; set|
|00003fb0| 20 75 70 20 76 61 72 69 | 6f 75 73 20 63 6f 6e 73 | up vari|ous cons|
|00003fc0| 74 61 6e 74 73 20 77 65 | 27 6c 6c 20 6e 65 65 64 |tants we|'ll need|
|00003fd0| 20 69 6e 20 74 68 65 20 | 69 6e 20 74 68 65 20 69 | in the |in the i|
|00003fe0| 6e 6e 65 72 6d 6f 73 74 | 20 6c 6f 6f 70 0d 3b 0d |nnermost| loop.;.|
|00003ff0| 0d 20 20 20 20 20 20 20 | 20 6d 6f 76 65 2e 6c 20 |. | move.l |
|00004000| 23 31 2c 44 35 09 09 20 | 20 20 20 20 20 20 20 3b |#1,D5.. | ;|
|00004010| 20 73 65 74 20 75 70 2e | 2e 2e 0d 20 20 20 20 20 | set up.|... |
|00004020| 20 20 20 6c 73 6c 2e 6c | 20 44 31 2c 44 35 09 09 | lsl.l| D1,D5..|
|00004030| 20 20 20 20 20 20 20 20 | 3b 20 2e 2e 2e 74 68 65 | |; ...the|
|00004040| 20 62 69 74 20 6d 61 73 | 6b 20 77 68 69 63 68 20 | bit mas|k which |
|00004050| 69 73 2e 2e 2e 0d 20 20 | 20 20 20 20 20 20 73 75 |is.... | su|
|00004060| 62 2e 6c 20 23 31 2c 44 | 35 09 09 20 20 20 20 20 |b.l #1,D|5.. |
|00004070| 20 20 20 3b 20 2e 2e 2e | 62 69 74 2d 77 69 64 74 | ; ...|bit-widt|
|00004080| 68 20 28 63 6f 6c 73 29 | 20 31 27 73 0d 0d 20 20 |h (cols)| 1's.. |
|00004090| 20 20 20 20 20 20 61 64 | 64 2e 77 20 44 31 2c 44 | ad|d.w D1,D|
|000040a0| 30 09 09 20 20 20 20 20 | 20 20 20 3b 20 66 69 6e |0.. | ; fin|
|000040b0| 64 20 74 6f 74 61 6c 20 | 62 69 74 2d 77 69 64 74 |d total |bit-widt|
|000040c0| 68 20 28 72 6f 77 73 20 | 70 6c 75 73 20 63 6f 6c |h (rows |plus col|
|000040d0| 75 6d 6e 73 29 0d 20 20 | 20 20 20 20 20 20 6c 65 |umns). | le|
|000040e0| 61 20 54 41 42 4c 45 2c | 41 30 09 09 20 20 20 20 |a TABLE,|A0.. |
|000040f0| 20 20 20 20 3b 20 70 6f | 69 6e 74 20 74 6f 20 74 | ; po|int to t|
|00004100| 68 65 20 74 61 62 6c 65 | 20 6f 66 20 58 4f 52 20 |he table| of XOR |
|00004110| 6d 61 73 6b 73 0d 20 20 | 20 20 20 20 20 20 6d 6f |masks. | mo|
|00004120| 76 65 71 20 23 30 2c 44 | 33 09 09 20 20 20 20 20 |veq #0,D|3.. |
|00004130| 20 20 20 3b 20 63 6c 65 | 61 72 20 6f 75 74 20 44 | ; cle|ar out D|
|00004140| 33 20 62 65 66 6f 72 65 | 20 77 65 20 66 69 6c 6c |3 before| we fill|
|00004150| 20 74 68 65 20 6c 6f 77 | 20 62 79 74 65 0d 20 20 | the low| byte. |
|00004160| 20 20 20 20 20 20 6d 6f | 76 65 2e 62 20 30 28 41 | mo|ve.b 0(A|
|00004170| 30 2c 44 30 29 2c 44 33 | 09 20 20 20 20 20 20 20 |0,D0),D3|. |
|00004180| 20 3b 20 67 72 61 62 20 | 74 68 65 20 63 6f 72 72 | ; grab |the corr|
|00004190| 65 63 74 20 58 4f 52 20 | 6d 61 73 6b 20 69 6e 20 |ect XOR |mask in |
|000041a0| 44 33 0d 0d 3b 0d 3b 20 | 74 68 65 20 74 61 62 6c |D3..;.; |the tabl|
|000041b0| 65 20 69 73 20 73 61 76 | 65 64 20 63 6f 6d 70 61 |e is sav|ed compa|
|000041c0| 63 74 6c 79 2c 20 73 69 | 6e 63 65 20 6e 6f 6e 65 |ctly, si|nce none|
|000041d0| 20 6f 66 20 74 68 65 20 | 6d 61 73 6b 73 20 61 72 | of the |masks ar|
|000041e0| 65 20 77 69 64 65 72 20 | 74 68 61 6e 20 61 20 62 |e wider |than a b|
|000041f0| 79 74 65 2e 20 20 77 65 | 20 68 61 76 65 20 74 6f |yte. we| have to|
|00004200| 20 75 6e 70 61 63 6b 20 | 69 74 20 73 6f 0d 3b 20 | unpack |it so.; |
|00004210| 74 68 65 20 68 69 67 68 | 2d 6f 72 64 65 72 20 62 |the high|-order b|
|00004220| 69 74 20 6f 66 20 74 68 | 65 20 44 30 2d 62 69 74 |it of th|e D0-bit|
|00004230| 2d 77 69 64 65 20 66 69 | 65 6c 64 20 69 73 20 6f |-wide fi|eld is o|
|00004240| 6e 3a 0d 3b 0d 0d 55 4e | 50 41 43 4b 3a 20 61 64 |n:.;..UN|PACK: ad|
|00004250| 64 2e 6c 20 44 33 2c 44 | 33 09 09 20 20 20 20 20 |d.l D3,D|3.. |
|00004260| 20 20 20 3b 20 73 68 69 | 66 74 20 6c 65 66 74 20 | ; shi|ft left |
|00004270| 62 79 20 6f 6e 65 0d 20 | 20 20 20 20 20 20 20 62 |by one. | b|
|00004280| 70 6c 2e 73 20 55 4e 50 | 41 43 4b 09 09 20 20 20 |pl.s UNP|ACK.. |
|00004290| 20 20 20 20 20 3b 20 6b | 65 65 70 20 6d 6f 76 69 | ; k|eep movi|
|000042a0| 6e 67 20 75 6e 74 69 6c | 20 74 68 65 20 74 6f 70 |ng until| the top|
|000042b0| 20 62 69 74 20 74 68 61 | 74 27 73 20 6f 6e 20 69 | bit tha|t's on i|
|000042c0| 73 20 61 6c 69 67 6e 65 | 64 20 61 74 20 74 68 65 |s aligne|d at the|
|000042d0| 20 74 6f 70 20 65 6e 64 | 0d 0d 20 20 20 20 20 20 | top end|.. |
|000042e0| 20 20 72 6f 6c 2e 6c 20 | 44 30 2c 44 33 09 09 20 | rol.l |D0,D3.. |
|000042f0| 20 20 20 20 20 20 20 3b | 20 6e 6f 77 20 73 77 69 | ;| now swi|
|00004300| 6e 67 20 74 68 65 20 74 | 6f 70 20 44 30 20 62 69 |ng the t|op D0 bi|
|00004310| 74 73 20 61 72 6f 75 6e | 64 20 74 6f 20 62 65 20 |ts aroun|d to be |
|00004320| 74 68 65 20 62 6f 74 74 | 6f 6d 20 44 30 20 62 69 |the bott|om D0 bi|
|00004330| 74 73 2c 20 74 68 65 20 | 6d 61 73 6b 0d 20 20 20 |ts, the |mask. |
|00004340| 20 20 20 20 20 6d 6f 76 | 65 2e 6c 20 44 33 2c 44 | mov|e.l D3,D|
|00004350| 30 09 09 20 20 20 20 20 | 20 20 20 3b 20 31 73 74 |0.. | ; 1st|
|00004360| 20 73 65 71 75 65 6e 63 | 65 20 65 6c 65 6d 65 6e | sequenc|e elemen|
|00004370| 74 20 69 73 20 74 68 65 | 20 6d 61 73 6b 20 69 74 |t is the| mask it|
|00004380| 73 65 6c 66 0d 0d 3b 0d | 3b 20 64 6f 20 61 6c 6c |self..;.|; do all|
|00004390| 20 6b 69 6e 64 73 20 6f | 66 20 70 72 65 70 61 72 | kinds o|f prepar|
|000043a0| 61 74 69 6f 6e 3a 0d 3b | 0d 0d 20 20 20 20 20 20 |ation:.;|.. |
|000043b0| 20 20 6d 6f 76 65 2e 6c | 20 73 72 63 4f 75 72 73 | move.l| srcOurs|
|000043c0| 2b 6f 42 61 73 65 28 41 | 36 29 2c 44 32 20 20 20 |+oBase(A|6),D2 |
|000043d0| 20 20 3b 20 73 65 74 20 | 75 70 20 62 61 73 65 20 | ; set |up base |
|000043e0| 70 6f 69 6e 74 65 72 20 | 66 6f 72 20 6f 75 72 20 |pointer |for our |
|000043f0| 73 6f 75 72 63 65 20 62 | 69 74 73 0d 20 20 20 20 |source b|its. |
|00004400| 20 20 20 20 6c 73 6c 2e | 6c 20 23 33 2c 44 32 09 | lsl.|l #3,D2.|
|00004410| 09 20 20 20 20 20 20 20 | 20 3b 20 6d 61 6b 65 20 |. | ; make |
|00004420| 69 74 20 69 6e 74 6f 20 | 61 20 62 69 74 20 61 64 |it into |a bit ad|
|00004430| 64 72 65 73 73 0d 20 20 | 20 20 20 20 20 20 6d 6f |dress. | mo|
|00004440| 76 65 2e 6c 20 44 32 2c | 41 30 09 09 20 20 20 20 |ve.l D2,|A0.. |
|00004450| 20 20 20 20 3b 20 70 75 | 74 20 69 74 20 77 68 65 | ; pu|t it whe|
|00004460| 72 65 20 74 68 65 20 66 | 61 73 74 20 6c 6f 6f 70 |re the f|ast loop|
|00004470| 20 77 69 6c 6c 20 75 73 | 65 20 69 74 0d 20 20 20 | will us|e it. |
|00004480| 20 20 20 20 20 6d 6f 76 | 65 2e 77 20 73 72 63 4f | mov|e.w srcO|
|00004490| 75 72 73 2b 6f 4c 62 69 | 74 73 28 41 36 29 2c 44 |urs+oLbi|ts(A6),D|
|000044a0| 32 20 20 20 20 3b 20 6e | 6f 77 20 70 69 63 6b 20 |2 ; n|ow pick |
|000044b0| 75 70 20 73 6f 75 72 63 | 65 20 6c 65 66 74 20 6d |up sourc|e left m|
|000044c0| 61 72 67 69 6e 0d 20 20 | 20 20 20 20 20 20 65 78 |argin. | ex|
|000044d0| 74 2e 6c 20 44 32 09 09 | 20 20 20 20 20 20 20 20 |t.l D2..| |
|000044e0| 3b 20 6d 61 6b 65 20 69 | 74 20 61 20 6c 6f 6e 67 |; make i|t a long|
|000044f0| 77 6f 72 64 0d 20 20 20 | 20 20 20 20 20 61 64 64 |word. | add|
|00004500| 2e 6c 20 44 32 2c 41 30 | 09 09 20 20 20 20 20 20 |.l D2,A0|.. |
|00004510| 20 20 3b 20 61 6e 64 20 | 6d 61 6b 65 20 41 30 20 | ; and |make A0 |
|00004520| 75 73 65 66 75 6c 20 66 | 6f 72 20 6f 64 64 20 72 |useful f|or odd r|
|00004530| 6f 75 74 69 6e 65 20 62 | 65 6c 6f 77 0d 0d 20 20 |outine b|elow.. |
|00004540| 20 20 20 20 20 20 6d 6f | 76 65 2e 6c 20 64 73 74 | mo|ve.l dst|
|00004550| 4f 75 72 73 2b 6f 42 61 | 73 65 28 41 36 29 2c 44 |Ours+oBa|se(A6),D|
|00004560| 32 20 20 20 20 20 3b 20 | 73 65 74 20 75 70 20 62 |2 ; |set up b|
|00004570| 61 73 65 20 70 6f 69 6e | 74 65 72 20 66 6f 72 20 |ase poin|ter for |
|00004580| 74 61 72 67 65 74 0d 20 | 20 20 20 20 20 20 20 6c |target. | l|
|00004590| 73 6c 2e 6c 20 23 33 2c | 44 32 09 09 20 20 20 20 |sl.l #3,|D2.. |
|000045a0| 20 20 20 20 3b 20 61 67 | 61 69 6e 2c 20 62 69 74 | ; ag|ain, bit|
|000045b0| 20 61 64 64 72 65 73 73 | 69 6e 67 20 77 6f 72 6b | address|ing work|
|000045c0| 73 20 6f 75 74 20 66 61 | 73 74 65 72 0d 20 20 20 |s out fa|ster. |
|000045d0| 20 20 20 20 20 6d 6f 76 | 65 2e 6c 20 44 32 2c 41 | mov|e.l D2,A|
|000045e0| 31 09 09 20 20 20 20 20 | 20 20 20 3b 20 73 74 75 |1.. | ; stu|
|000045f0| 66 66 20 69 74 20 77 68 | 65 72 65 20 77 65 20 77 |ff it wh|ere we w|
|00004600| 61 6e 74 20 69 74 20 66 | 6f 72 20 74 68 65 20 6c |ant it f|or the l|
|00004610| 6f 6f 70 0d 20 20 20 20 | 20 20 20 20 6d 6f 76 65 |oop. | move|
|00004620| 2e 77 20 64 73 74 4f 75 | 72 73 2b 6f 4c 62 69 74 |.w dstOu|rs+oLbit|
|00004630| 73 28 41 36 29 2c 44 32 | 20 20 20 20 3b 20 6e 6f |s(A6),D2| ; no|
|00004640| 77 20 70 69 63 6b 20 75 | 70 20 64 65 73 74 69 6e |w pick u|p destin|
|00004650| 61 74 69 6f 6e 20 6c 65 | 66 74 20 6d 61 72 67 69 |ation le|ft margi|
|00004660| 6e 0d 20 20 20 20 20 20 | 20 20 65 78 74 2e 6c 20 |n. | ext.l |
|00004670| 44 32 09 09 20 20 20 20 | 20 20 20 20 3b 20 6d 61 |D2.. | ; ma|
|00004680| 6b 65 20 69 74 20 61 20 | 6c 6f 6e 67 77 6f 72 64 |ke it a |longword|
|00004690| 0d 20 20 20 20 20 20 20 | 20 61 64 64 2e 6c 20 44 |. | add.l D|
|000046a0| 32 2c 41 31 09 09 20 20 | 20 20 20 20 20 20 3b 20 |2,A1.. | ; |
|000046b0| 61 6e 64 20 6d 61 6b 65 | 20 41 31 20 75 73 65 66 |and make| A1 usef|
|000046c0| 75 6c 2c 20 74 6f 6f 0d | 0d 20 20 20 20 20 20 20 |ul, too.|. |
|000046d0| 20 6d 6f 76 65 2e 77 20 | 73 72 63 4f 75 72 73 2b | move.w |srcOurs+|
|000046e0| 6f 43 6f 6c 73 28 41 36 | 29 2c 41 32 20 20 20 20 |oCols(A6|),A2 |
|000046f0| 20 3b 20 70 69 63 6b 20 | 75 70 20 74 68 65 20 6f | ; pick |up the o|
|00004700| 66 74 65 6e 2d 75 73 65 | 64 20 63 6f 75 6e 74 20 |ften-use|d count |
|00004710| 6f 66 20 63 6f 6c 75 6d | 6e 73 0d 20 20 20 20 20 |of colum|ns. |
|00004720| 20 20 20 6d 6f 76 65 2e | 77 20 73 72 63 4f 75 72 | move.|w srcOur|
|00004730| 73 2b 6f 52 6f 77 73 28 | 41 36 29 2c 44 32 20 20 |s+oRows(|A6),D2 |
|00004740| 20 20 20 3b 20 61 6e 64 | 20 6f 66 20 72 6f 77 73 | ; and| of rows|
|00004750| 0d 20 20 20 20 20 20 20 | 20 61 64 64 2e 77 20 23 |. | add.w #|
|00004760| 31 2c 44 32 09 09 20 20 | 20 20 20 20 20 20 3b 20 |1,D2.. | ; |
|00004770| 6d 61 6b 65 20 72 6f 77 | 20 63 6f 75 6e 74 20 6f |make row| count o|
|00004780| 6e 65 2d 74 6f 6f 2d 68 | 69 67 68 20 66 6f 72 20 |ne-too-h|igh for |
|00004790| 63 6f 6d 70 61 72 65 73 | 0d 20 20 20 20 20 20 20 |compares|. |
|000047a0| 20 65 78 74 2e 6c 20 44 | 32 09 09 20 20 20 20 20 | ext.l D|2.. |
|000047b0| 20 20 20 3b 20 61 6e 64 | 20 6d 61 6b 65 20 69 74 | ; and| make it|
|000047c0| 20 61 20 6c 6f 6e 67 77 | 6f 72 64 0d 20 20 20 20 | a longw|ord. |
|000047d0| 20 20 20 20 6c 73 6c 2e | 6c 20 44 31 2c 44 32 09 | lsl.|l D1,D2.|
|000047e0| 09 20 20 20 20 20 20 20 | 20 3b 20 73 6c 69 64 65 |. | ; slide|
|000047f0| 20 69 74 20 74 6f 20 6c | 69 6e 65 20 75 70 20 77 | it to l|ine up w|
|00004800| 2f 72 6f 77 73 20 70 61 | 72 74 20 6f 66 20 44 30 |/rows pa|rt of D0|
|00004810| 0d 20 20 20 20 20 20 20 | 20 6d 6f 76 65 2e 6c 20 |. | move.l |
|00004820| 44 32 2c 41 34 09 09 20 | 20 20 20 20 20 20 20 3b |D2,A4.. | ;|
|00004830| 20 61 6e 64 20 73 61 76 | 65 20 74 68 61 74 20 73 | and sav|e that s|
|00004840| 6f 6d 65 77 68 65 72 65 | 20 75 73 65 66 75 6c 0d |omewhere| useful.|
|00004850| 0d 20 20 20 20 20 20 20 | 20 6d 6f 76 65 2e 77 20 |. | move.w |
|00004860| 44 31 2c 44 32 09 09 20 | 20 20 20 20 20 20 20 3b |D1,D2.. | ;|
|00004870| 20 70 75 74 20 6c 6f 67 | 32 28 63 6f 6c 75 6d 6e | put log|2(column|
|00004880| 73 29 20 69 6e 20 61 20 | 73 61 66 65 20 70 6c 61 |s) in a |safe pla|
|00004890| 63 65 20 28 73 69 67 68 | 29 0d 0d 3b 0d 3b 20 74 |ce (sigh|)..;.; t|
|000048a0| 72 79 20 74 6f 20 72 65 | 64 75 63 65 20 74 68 65 |ry to re|duce the|
|000048b0| 20 61 6d 6f 75 6e 74 20 | 77 65 20 73 68 69 66 74 | amount |we shift|
|000048c0| 20 64 6f 77 6e 20 44 32 | 2e 20 20 74 68 69 73 20 | down D2|. this |
|000048d0| 69 6e 76 6f 6c 76 65 73 | 3a 0d 3b 20 20 20 20 68 |involves|:.; h|
|000048e0| 61 6c 76 69 6e 67 20 74 | 68 65 20 73 74 72 69 64 |alving t|he strid|
|000048f0| 65 73 20 61 73 20 6c 6f | 6e 67 20 61 73 20 65 61 |es as lo|ng as ea|
|00004900| 63 68 20 69 73 20 65 76 | 65 6e 2c 20 64 65 63 72 |ch is ev|en, decr|
|00004910| 65 6d 65 6e 74 69 6e 67 | 20 44 32 20 61 73 20 77 |ementing| D2 as w|
|00004920| 65 20 67 6f 0d 3b 20 20 | 20 20 6d 61 73 6b 69 6e |e go.; | maskin|
|00004930| 67 20 74 68 65 20 62 6f | 74 74 6f 6d 20 62 69 74 |g the bo|ttom bit|
|00004940| 73 20 6f 66 66 20 44 34 | 20 77 68 65 6e 20 77 65 |s off D4| when we|
|00004950| 20 65 78 74 72 61 63 74 | 20 74 68 65 20 72 6f 77 | extract| the row|
|00004960| 20 63 6f 75 6e 74 20 69 | 6e 20 74 68 65 20 6c 6f | count i|n the lo|
|00004970| 6f 70 0d 3b 0d 3b 20 61 | 6c 61 73 2c 20 77 65 20 |op.;.; a|las, we |
|00004980| 63 61 6e 27 74 20 61 6c | 77 61 79 73 20 73 68 69 |can't al|ways shi|
|00004990| 66 74 20 61 73 20 6c 69 | 74 74 6c 65 20 61 73 20 |ft as li|ttle as |
|000049a0| 77 65 20 77 61 6e 74 2e | 20 20 66 6f 72 20 69 6e |we want.| for in|
|000049b0| 73 74 61 6e 63 65 2c 20 | 69 66 20 77 65 20 64 6f |stance, |if we do|
|000049c0| 6e 27 74 0d 3b 20 73 68 | 69 66 74 20 64 6f 77 6e |n't.; sh|ift down|
|000049d0| 20 66 61 72 20 65 6e 6f | 75 67 68 2c 20 74 68 65 | far eno|ugh, the|
|000049e0| 20 72 6f 77 20 63 6f 75 | 6e 74 20 77 69 6c 6c 20 | row cou|nt will |
|000049f0| 62 65 20 73 6f 20 68 69 | 67 68 20 61 73 20 74 6f |be so hi|gh as to|
|00004a00| 20 65 78 63 65 65 64 20 | 61 20 68 61 6c 66 77 6f | exceed |a halfwo|
|00004a10| 72 64 2c 0d 3b 20 61 6e | 64 20 74 68 65 20 64 72 |rd,.; an|d the dr|
|00004a20| 65 61 64 20 6d 75 6c 75 | 20 69 6e 73 74 72 75 63 |ead mulu| instruc|
|00004a30| 74 69 6f 6e 20 77 6f 6e | 27 74 20 77 6f 72 6b 20 |tion won|'t work |
|00004a40| 28 69 74 20 65 61 74 73 | 20 6f 6e 6c 79 20 77 6f |(it eats| only wo|
|00004a50| 72 64 20 6f 70 65 72 61 | 6e 64 73 29 2e 20 20 73 |rd opera|nds). s|
|00004a60| 6f 2c 0d 3b 20 77 65 20 | 68 61 76 65 20 74 6f 20 |o,.; we |have to |
|00004a70| 68 61 76 65 20 61 6e 20 | 65 78 74 72 61 20 63 68 |have an |extra ch|
|00004a80| 65 63 6b 20 74 6f 20 74 | 61 6b 65 20 75 73 20 6f |eck to t|ake us o|
|00004a90| 75 74 20 6f 66 20 74 68 | 65 20 6c 6f 6f 70 20 65 |ut of th|e loop e|
|00004aa0| 61 72 6c 79 2e 0d 3b 0d | 0d 20 20 20 20 20 20 20 |arly..;.|. |
|00004ab0| 20 6d 6f 76 65 2e 77 20 | 73 72 63 4f 75 72 73 2b | move.w |srcOurs+|
|00004ac0| 6f 53 74 72 69 64 65 28 | 41 36 29 2c 44 34 20 20 |oStride(|A6),D4 |
|00004ad0| 20 3b 20 70 69 63 6b 20 | 75 70 20 73 6f 75 72 63 | ; pick |up sourc|
|00004ae0| 65 20 73 74 72 69 64 65 | 0d 20 20 20 20 20 20 20 |e stride|. |
|00004af0| 20 6d 6f 76 65 2e 77 20 | 64 73 74 4f 75 72 73 2b | move.w |dstOurs+|
|00004b00| 6f 53 74 72 69 64 65 28 | 41 36 29 2c 44 37 20 20 |oStride(|A6),D7 |
|00004b10| 20 3b 20 61 6e 64 20 74 | 61 72 67 65 74 20 73 74 | ; and t|arget st|
|00004b20| 72 69 64 65 0d 20 20 20 | 20 20 20 20 20 6d 6f 76 |ride. | mov|
|00004b30| 65 2e 77 20 73 72 63 4f | 75 72 73 2b 6f 52 6f 77 |e.w srcO|urs+oRow|
|00004b40| 73 28 41 36 29 2c 44 31 | 20 20 20 20 20 3b 20 70 |s(A6),D1| ; p|
|00004b50| 69 63 6b 20 75 70 20 72 | 6f 77 20 63 6f 75 6e 74 |ick up r|ow count|
|00004b60| 20 66 6f 72 20 6b 6c 75 | 64 67 65 79 20 63 68 65 | for klu|dgey che|
|00004b70| 63 6b 0d 0d 20 20 20 20 | 20 20 20 20 74 73 74 2e |ck.. | tst.|
|00004b80| 77 20 44 32 09 09 20 20 | 20 20 20 20 20 20 3b 20 |w D2.. | ; |
|00004b90| 68 6f 77 27 73 20 74 68 | 65 20 62 69 74 63 6f 75 |how's th|e bitcou|
|00004ba0| 6e 74 3f 0d 20 20 20 20 | 20 20 20 20 62 65 71 2e |nt?. | beq.|
|00004bb0| 73 20 48 41 4c 46 44 4f | 4e 45 09 09 20 20 20 20 |s HALFDO|NE.. |
|00004bc0| 20 20 20 20 3b 20 73 6b | 69 70 20 6f 75 74 20 69 | ; sk|ip out i|
|00004bd0| 66 20 61 6c 72 65 61 64 | 79 20 64 6f 77 6e 20 74 |f alread|y down t|
|00004be0| 6f 20 7a 65 72 6f 0d 0d | 48 41 4c 46 4c 4f 4f 50 |o zero..|HALFLOOP|
|00004bf0| 3a 0d 20 20 20 20 20 20 | 20 20 62 74 73 74 20 23 |:. | btst #|
|00004c00| 30 2c 44 34 09 09 20 20 | 20 20 20 20 20 20 3b 20 |0,D4.. | ; |
|00004c10| 69 73 20 74 68 69 73 20 | 73 74 72 69 64 65 20 65 |is this |stride e|
|00004c20| 76 65 6e 3f 0d 20 20 20 | 20 20 20 20 20 62 6e 65 |ven?. | bne|
|00004c30| 2e 73 20 48 41 4c 46 44 | 4f 4e 45 09 09 20 20 20 |.s HALFD|ONE.. |
|00004c40| 20 20 20 20 20 3b 20 6e | 6f 70 65 20 2d 2d 20 6f | ; n|ope -- o|
|00004c50| 75 72 20 77 6f 72 6b 20 | 68 65 72 65 20 69 73 20 |ur work |here is |
|00004c60| 64 6f 6e 65 0d 20 20 20 | 20 20 20 20 20 62 74 73 |done. | bts|
|00004c70| 74 20 23 30 2c 44 37 09 | 09 20 20 20 20 20 20 20 |t #0,D7.|. |
|00004c80| 20 3b 20 68 6f 77 20 61 | 62 6f 75 74 20 74 68 69 | ; how a|bout thi|
|00004c90| 73 20 6f 6e 65 3f 0d 20 | 20 20 20 20 20 20 20 62 |s one?. | b|
|00004ca0| 6e 65 2e 73 20 48 41 4c | 46 44 4f 4e 45 09 09 20 |ne.s HAL|FDONE.. |
|00004cb0| 20 20 20 20 20 20 20 3b | 20 68 61 76 65 20 74 6f | ;| have to|
|00004cc0| 20 68 61 76 65 20 62 6f | 74 68 20 65 76 65 6e 0d | have bo|th even.|
|00004cd0| 0d 20 20 20 20 20 20 20 | 20 6c 73 6c 2e 77 20 23 |. | lsl.w #|
|00004ce0| 31 2c 44 31 09 09 20 20 | 20 20 20 20 20 20 3b 20 |1,D1.. | ; |
|00004cf0| 63 61 6e 20 77 65 20 6b | 65 65 70 20 6d 61 78 20 |can we k|eep max |
|00004d00| 72 6f 77 20 6e 75 6d 62 | 65 72 20 69 6e 20 61 20 |row numb|er in a |
|00004d10| 68 61 6c 66 77 6f 72 64 | 3f 0d 20 20 20 20 20 20 |halfword|?. |
|00004d20| 20 20 62 63 73 2e 73 20 | 48 41 4c 46 44 4f 4e 45 | bcs.s |HALFDONE|
|00004d30| 09 09 20 20 20 20 20 20 | 20 20 3b 20 6e 6f 70 65 |.. | ; nope|
|00004d40| 20 2d 2d 20 44 32 20 6d | 75 73 74 6e 27 74 20 67 | -- D2 m|ustn't g|
|00004d50| 65 74 20 61 6e 79 20 73 | 6d 61 6c 6c 65 72 21 0d |et any s|maller!.|
|00004d60| 0d 20 20 20 20 20 20 20 | 20 6c 73 72 2e 77 20 23 |. | lsr.w #|
|00004d70| 31 2c 44 34 09 09 20 20 | 20 20 20 20 20 20 3b 20 |1,D4.. | ; |
|00004d80| 68 61 6c 76 65 20 65 61 | 63 68 20 73 74 72 69 64 |halve ea|ch strid|
|00004d90| 65 2e 2e 2e 0d 20 20 20 | 20 20 20 20 20 6c 73 72 |e.... | lsr|
|00004da0| 2e 77 20 23 31 2c 44 37 | 09 09 20 20 20 20 20 20 |.w #1,D7|.. |
|00004db0| 20 20 3b 20 2e 2e 2e 6c | 69 6b 65 20 74 68 69 73 | ; ...l|ike this|
|00004dc0| 0d 20 20 20 20 20 20 20 | 20 73 75 62 2e 77 20 23 |. | sub.w #|
|00004dd0| 31 2c 44 32 09 09 20 20 | 20 20 20 20 20 20 3b 20 |1,D2.. | ; |
|00004de0| 61 6e 64 20 72 65 6d 65 | 6d 62 65 72 20 6e 6f 74 |and reme|mber not|
|00004df0| 20 74 6f 20 73 68 69 66 | 74 20 64 6f 77 6e 20 61 | to shif|t down a|
|00004e00| 73 20 66 61 72 0d 20 20 | 20 20 20 20 20 20 62 6e |s far. | bn|
|00004e10| 65 2e 73 20 48 41 4c 46 | 4c 4f 4f 50 09 09 20 20 |e.s HALF|LOOP.. |
|00004e20| 20 20 20 20 20 20 3b 20 | 6c 6f 6f 70 20 75 6e 6c | ; |loop unl|
|00004e30| 65 73 73 20 77 65 27 72 | 65 20 64 6f 77 6e 20 74 |ess we'r|e down t|
|00004e40| 6f 20 6e 6f 20 73 68 69 | 66 74 20 61 74 20 61 6c |o no shi|ft at al|
|00004e50| 6c 0d 0d 48 41 4c 46 44 | 4f 4e 45 3a 09 09 09 20 |l..HALFD|ONE:... |
|00004e60| 20 20 20 20 20 20 20 3b | 20 6e 6f 20 74 61 63 6b | ;| no tack|
|00004e70| 79 20 70 6c 61 74 69 74 | 75 64 65 73 2c 20 70 6c |y platit|udes, pl|
|00004e80| 65 61 73 65 0d 20 20 20 | 20 20 20 20 20 6d 6f 76 |ease. | mov|
|00004e90| 65 2e 77 20 44 34 2c 73 | 72 63 4f 75 72 73 2b 6f |e.w D4,s|rcOurs+o|
|00004ea0| 53 74 72 69 64 65 28 41 | 36 29 20 20 20 3b 20 70 |Stride(A|6) ; p|
|00004eb0| 75 74 20 62 61 63 6b 20 | 73 6f 75 72 63 65 20 73 |ut back |source s|
|00004ec0| 74 72 69 64 65 0d 20 20 | 20 20 20 20 20 20 6d 6f |tride. | mo|
|00004ed0| 76 65 2e 77 20 44 37 2c | 64 73 74 4f 75 72 73 2b |ve.w D7,|dstOurs+|
|00004ee0| 6f 53 74 72 69 64 65 28 | 41 36 29 20 20 20 3b 20 |oStride(|A6) ; |
|00004ef0| 61 6e 64 20 74 61 72 67 | 65 74 20 73 74 72 69 64 |and targ|et strid|
|00004f00| 65 0d 0d 3b 0d 3b 20 6d | 61 6b 65 20 73 6f 6d 65 |e..;.; m|ake some|
|00004f10| 20 73 74 75 66 66 20 66 | 61 73 74 65 72 20 74 6f | stuff f|aster to|
|00004f20| 20 61 63 63 65 73 73 20 | 2d 2d 20 75 73 65 20 74 | access |-- use t|
|00004f30| 68 65 20 66 61 63 74 20 | 74 68 61 74 20 28 41 6e |he fact |that (An|
|00004f40| 29 20 69 73 20 66 61 73 | 74 65 72 20 74 6f 20 61 |) is fas|ter to a|
|00004f50| 63 63 65 73 73 0d 3b 20 | 74 68 61 6e 20 64 28 41 |ccess.; |than d(A|
|00004f60| 6e 29 2e 20 20 74 68 69 | 73 20 6d 65 61 6e 73 20 |n). thi|s means |
|00004f70| 77 65 27 6c 6c 20 6d 69 | 73 75 73 65 20 6f 75 72 |we'll mi|suse our|
|00004f80| 20 66 72 61 6d 65 20 70 | 6f 69 6e 74 65 72 2c 20 | frame p|ointer, |
|00004f90| 62 75 74 20 64 6f 6e 27 | 74 20 77 6f 72 72 79 20 |but don'|t worry |
|00004fa0| 2d 2d 20 77 65 27 6c 6c | 0d 3b 20 72 65 73 74 6f |-- we'll|.; resto|
|00004fb0| 72 65 20 69 74 20 62 65 | 66 6f 72 65 20 77 65 20 |re it be|fore we |
|00004fc0| 75 73 65 20 69 74 20 61 | 67 61 69 6e 2e 0d 3b 0d |use it a|gain..;.|
|00004fd0| 0d 20 20 20 20 20 20 20 | 20 6d 6f 76 65 2e 77 20 |. | move.w |
|00004fe0| 73 72 63 4f 75 72 73 2b | 6f 53 74 72 69 64 65 28 |srcOurs+|oStride(|
|00004ff0| 41 36 29 2c 41 35 20 20 | 20 3b 20 6d 61 6b 65 20 |A6),A5 | ; make |
|00005000| 73 6f 75 72 63 65 20 73 | 74 72 69 64 65 20 66 61 |source s|tride fa|
|00005010| 73 74 65 72 20 74 6f 20 | 61 63 63 65 73 73 2c 20 |ster to |access, |
|00005020| 74 6f 6f 0d 20 20 20 20 | 20 20 20 20 6d 6f 76 65 |too. | move|
|00005030| 2e 6c 20 41 36 2c 2d 28 | 53 50 29 09 09 20 20 20 |.l A6,-(|SP).. |
|00005040| 20 20 20 20 20 3b 20 73 | 61 76 65 20 66 72 61 6d | ; s|ave fram|
|00005050| 69 74 7a 20 70 6f 69 6e | 74 65 72 0d 20 20 20 20 |itz poin|ter. |
|00005060| 20 20 20 20 6d 6f 76 65 | 2e 77 20 64 73 74 4f 75 | move|.w dstOu|
|00005070| 72 73 2b 6f 53 74 72 69 | 64 65 28 41 36 29 2c 41 |rs+oStri|de(A6),A|
|00005080| 36 20 20 20 3b 20 70 69 | 63 6b 20 75 70 20 64 65 |6 ; pi|ck up de|
|00005090| 73 74 69 6e 61 74 69 6f | 6e 20 73 74 72 69 64 65 |stinatio|n stride|
|000050a0| 0d 20 20 20 20 20 20 20 | 20 6d 6f 76 65 2e 6c 20 |. | move.l |
|000050b0| 23 30 2c 44 36 09 09 20 | 20 20 20 20 20 20 20 3b |#0,D6.. | ;|
|000050c0| 20 77 65 20 64 6f 20 6f | 6e 6c 79 20 41 4e 44 2e | we do o|nly AND.|
|000050d0| 57 20 78 2c 44 36 20 2d | 2d 20 62 75 74 20 41 44 |W x,D6 -|- but AD|
|000050e0| 44 2e 4c 20 44 36 2c 78 | 0d 0d 20 20 20 20 20 20 |D.L D6,x|.. |
|000050f0| 20 20 63 6c 72 2e 77 20 | 2d 28 53 50 29 09 09 20 | clr.w |-(SP).. |
|00005100| 20 20 20 20 20 20 20 3b | 20 72 65 73 65 72 76 65 | ;| reserve|
|00005110| 20 72 6f 6f 6d 20 66 6f | 72 20 66 75 6e 63 74 69 | room fo|r functi|
|00005120| 6f 6e 20 72 65 73 75 6c | 74 0d 20 20 20 20 20 20 |on resul|t. |
|00005130| 20 20 62 73 72 20 4d 55 | 4c 43 48 4b 09 09 20 20 | bsr MU|LCHK.. |
|00005140| 20 20 20 20 20 20 3b 20 | 67 6f 20 73 65 65 20 69 | ; |go see i|
|00005150| 66 20 73 74 72 69 64 65 | 73 20 61 72 65 20 70 6f |f stride|s are po|
|00005160| 77 65 72 73 20 6f 66 20 | 74 77 6f 0d 20 20 20 20 |wers of |two. |
|00005170| 20 20 20 20 74 73 74 2e | 77 20 28 53 50 29 2b 09 | tst.|w (SP)+.|
|00005180| 09 20 20 20 20 20 20 20 | 20 3b 20 63 61 6e 20 77 |. | ; can w|
|00005190| 65 20 65 6c 69 6d 69 6e | 61 74 65 20 74 68 65 20 |e elimin|ate the |
|000051a0| 68 6f 72 72 69 62 6c 65 | 20 4d 55 4c 55 73 3f 0d |horrible| MULUs?.|
|000051b0| 20 20 20 20 20 20 20 20 | 62 6e 65 20 20 4e 4f 4d | |bne NOM|
|000051c0| 55 4c 09 09 20 20 20 20 | 20 20 20 20 3b 20 79 65 |UL.. | ; ye|
|000051d0| 73 21 20 20 68 75 72 72 | 61 79 21 0d 0d 3b 0d 3b |s! hurr|ay!..;.;|
|000051e0| 20 6d 61 69 6e 20 6c 6f | 6f 70 3a 20 6d 61 70 20 | main lo|op: map |
|000051f0| 74 68 65 20 73 65 71 75 | 65 6e 63 65 20 65 6c 65 |the sequ|ence ele|
|00005200| 6d 65 6e 74 20 69 6e 74 | 6f 20 72 6f 77 73 20 61 |ment int|o rows a|
|00005210| 6e 64 20 63 6f 6c 75 6d | 6e 73 2c 20 63 68 65 63 |nd colum|ns, chec|
|00005220| 6b 20 69 66 20 69 74 27 | 73 20 69 6e 20 62 6f 75 |k if it'|s in bou|
|00005230| 6e 64 73 0d 3b 20 61 6e | 64 20 73 6b 69 70 20 6f |nds.; an|d skip o|
|00005240| 6e 20 69 66 20 69 74 27 | 73 20 6e 6f 74 2c 20 66 |n if it'|s not, f|
|00005250| 6c 69 70 20 74 68 65 20 | 61 70 70 72 6f 70 72 69 |lip the |appropri|
|00005260| 61 74 65 20 62 69 74 2c | 20 67 65 6e 65 72 61 74 |ate bit,| generat|
|00005270| 65 20 74 68 65 20 6e 65 | 78 74 20 65 6c 65 6d 65 |e the ne|xt eleme|
|00005280| 6e 74 20 69 6e 20 74 68 | 65 0d 3b 20 73 65 71 75 |nt in th|e.; sequ|
|00005290| 65 6e 63 65 2c 20 61 6e | 64 20 6c 6f 6f 70 20 69 |ence, an|d loop i|
|000052a0| 66 20 74 68 65 20 73 65 | 71 75 65 6e 63 65 20 69 |f the se|quence i|
|000052b0| 73 6e 27 74 20 64 6f 6e | 65 2e 0d 3b 0d 0d 3b 0d |sn't don|e..;..;.|
|000052c0| 3b 20 63 68 65 63 6b 20 | 74 68 65 20 72 6f 77 20 |; check |the row |
|000052d0| 62 6f 75 6e 64 73 2e 09 | 20 6e 6f 74 65 20 74 68 |bounds..| note th|
|000052e0| 61 74 20 77 65 20 63 61 | 6e 20 63 68 65 63 6b 20 |at we ca|n check |
|000052f0| 74 68 65 20 72 6f 77 20 | 62 65 66 6f 72 65 20 65 |the row |before e|
|00005300| 78 74 72 61 63 74 69 6e | 67 20 69 74 20 66 72 6f |xtractin|g it fro|
|00005310| 6d 0d 3b 20 44 30 2c 20 | 69 67 6e 6f 72 69 6e 67 |m.; D0, |ignoring|
|00005320| 20 74 68 65 20 62 69 74 | 73 20 61 74 20 74 68 65 | the bit|s at the|
|00005330| 20 62 6f 74 74 6f 6d 20 | 6f 66 20 44 30 20 66 6f | bottom |of D0 fo|
|00005340| 72 20 74 68 65 20 63 6f | 6c 75 6d 6e 73 2e 20 20 |r the co|lumns. |
|00005350| 74 6f 20 67 65 74 20 74 | 68 65 73 65 20 62 69 74 |to get t|hese bit|
|00005360| 73 0d 3b 20 74 6f 20 62 | 65 20 69 67 6e 6f 72 65 |s.; to b|e ignore|
|00005370| 64 2c 20 77 65 20 68 61 | 64 20 74 6f 20 6d 61 6b |d, we ha|d to mak|
|00005380| 65 20 41 34 20 6f 6e 65 | 2d 74 6f 6f 2d 68 69 67 |e A4 one|-too-hig|
|00005390| 68 20 62 65 66 6f 72 65 | 20 73 68 69 66 74 69 6e |h before| shiftin|
|000053a0| 67 20 69 74 20 75 70 20 | 74 6f 20 61 6c 69 67 6e |g it up |to align|
|000053b0| 20 69 74 2e 0d 3b 0d 0d | 4c 4f 4f 50 3a 09 09 09 | it..;..|LOOP:...|
|000053c0| 09 20 20 20 20 20 20 20 | 20 3b 20 68 65 72 65 20 |. | ; here |
|000053d0| 66 6f 72 20 61 6e 6f 74 | 68 65 72 20 74 69 6d 65 |for anot|her time|
|000053e0| 20 61 72 6f 75 6e 64 0d | 20 20 20 20 20 20 20 20 | around.| |
|000053f0| 63 6d 70 2e 6c 20 41 34 | 2c 44 30 09 09 20 20 20 |cmp.l A4|,D0.. |
|00005400| 20 20 20 20 20 3b 20 69 | 73 20 72 6f 77 20 69 6e | ; i|s row in|
|00005410| 20 62 6f 75 6e 64 73 3f | 0d 20 20 20 20 20 20 20 | bounds?|. |
|00005420| 20 62 67 65 2e 73 20 4e | 45 58 54 09 09 20 20 20 | bge.s N|EXT.. |
|00005430| 20 20 20 20 20 3b 20 6e | 6f 3a 20 63 6c 69 70 20 | ; n|o: clip |
|00005440| 74 68 69 73 0d 0d 3b 0d | 3b 20 6d 61 70 20 69 74 |this..;.|; map it|
|00005450| 20 69 6e 74 6f 20 74 68 | 65 20 63 6f 6c 75 6d 6e | into th|e column|
|00005460| 3b 20 63 68 65 63 6b 20 | 62 6f 75 6e 64 73 2e 09 |; check |bounds..|
|00005470| 20 6e 6f 74 65 20 74 68 | 61 74 20 77 65 20 73 61 | note th|at we sa|
|00005480| 76 65 20 74 68 69 73 20 | 63 68 65 63 6b 20 66 6f |ve this |check fo|
|00005490| 72 20 73 65 63 6f 6e 64 | 3b 0d 3b 20 69 74 27 73 |r second|;.; it's|
|000054a0| 20 61 20 6c 69 74 74 6c | 65 20 73 6c 6f 77 65 72 | a littl|e slower|
|000054b0| 20 62 65 63 61 75 73 65 | 20 6f 66 20 74 68 65 20 | because| of the |
|000054c0| 6d 6f 76 65 20 61 6e 64 | 20 6d 61 73 6b 2e 0d 3b |move and| mask..;|
|000054d0| 0d 3b 20 63 68 75 63 6b | 20 73 61 67 65 6c 79 20 |.; chuck| sagely |
|000054e0| 70 6f 69 6e 74 73 20 6f | 75 74 20 74 68 61 74 20 |points o|ut that |
|000054f0| 77 68 65 6e 20 74 68 65 | 20 22 62 68 69 22 20 61 |when the| "bhi" a|
|00005500| 74 20 74 68 65 20 65 6e | 64 20 6f 66 20 74 68 65 |t the en|d of the|
|00005510| 20 6c 6f 6f 70 20 74 61 | 6b 65 73 2c 20 77 65 0d | loop ta|kes, we.|
|00005520| 3b 20 6b 6e 6f 77 20 77 | 65 20 63 61 6e 20 69 67 |; know w|e can ig|
|00005530| 6e 6f 72 65 20 74 68 65 | 20 61 62 6f 76 65 20 63 |nore the| above c|
|00005540| 6f 6d 70 61 72 69 73 6f | 6e 2e 20 20 74 68 61 6e |ompariso|n. than|
|00005550| 6b 73 2c 20 63 68 75 63 | 6b 2e 20 20 79 6f 75 27 |ks, chuc|k. you'|
|00005560| 72 65 20 61 20 67 72 65 | 61 74 20 67 75 79 2e 0d |re a gre|at guy..|
|00005570| 3b 0d 0d 4c 4f 4f 50 52 | 4f 57 3a 09 09 09 09 3b |;..LOOPR|OW:....;|
|00005580| 20 68 65 72 65 20 77 68 | 65 6e 20 77 65 20 6b 6e | here wh|en we kn|
|00005590| 6f 77 20 74 68 65 20 72 | 6f 77 20 6e 75 6d 62 65 |ow the r|ow numbe|
|000055a0| 72 20 69 73 20 4f 4b 0d | 20 20 20 20 20 20 20 20 |r is OK.| |
|000055b0| 6d 6f 76 65 2e 77 20 44 | 30 2c 44 36 09 09 20 20 |move.w D|0,D6.. |
|000055c0| 20 20 20 20 20 20 3b 20 | 63 6f 70 79 20 74 68 65 | ; |copy the|
|000055d0| 20 73 65 71 75 65 6e 63 | 65 20 65 6c 65 6d 65 6e | sequenc|e elemen|
|000055e0| 74 0d 20 20 20 20 20 20 | 20 20 61 6e 64 2e 77 20 |t. | and.w |
|000055f0| 44 35 2c 44 36 09 09 20 | 20 20 20 20 20 20 20 3b |D5,D6.. | ;|
|00005600| 20 66 69 6e 64 20 6a 75 | 73 74 20 74 68 65 20 63 | find ju|st the c|
|00005610| 6f 6c 75 6d 6e 20 6e 75 | 6d 62 65 72 0d 0d 20 20 |olumn nu|mber.. |
|00005620| 20 20 20 20 20 20 63 6d | 70 2e 77 20 41 32 2c 44 | cm|p.w A2,D|
|00005630| 36 09 09 20 20 20 20 20 | 20 20 20 3b 20 74 6f 6f |6.. | ; too|
|00005640| 20 66 61 72 20 74 6f 20 | 74 68 65 20 72 69 67 68 | far to |the righ|
|00005650| 74 3f 20 28 70 61 73 74 | 20 6f 43 6f 6c 73 3f 29 |t? (past| oCols?)|
|00005660| 0d 20 20 20 20 20 20 20 | 20 62 67 74 2e 73 20 4e |. | bgt.s N|
|00005670| 45 58 54 09 09 20 20 20 | 20 20 20 20 20 3b 20 79 |EXT.. | ; y|
|00005680| 65 73 3a 20 73 6b 69 70 | 20 6f 75 74 0d 0d 20 20 |es: skip| out.. |
|00005690| 20 20 20 20 20 20 6d 6f | 76 65 2e 6c 20 44 30 2c | mo|ve.l D0,|
|000056a0| 44 34 09 09 20 20 20 20 | 20 20 20 20 3b 20 77 65 |D4.. | ; we|
|000056b0| 20 6b 6e 6f 77 20 65 6c | 65 6d 65 6e 74 20 77 69 | know el|ement wi|
|000056c0| 6c 6c 20 62 65 20 75 73 | 65 64 3b 20 63 6f 70 79 |ll be us|ed; copy|
|000056d0| 20 69 74 0d 20 20 20 20 | 20 20 20 20 73 75 62 2e | it. | sub.|
|000056e0| 77 20 44 36 2c 44 34 09 | 09 20 20 20 20 20 20 20 |w D6,D4.|. |
|000056f0| 20 3b 20 72 65 6d 6f 76 | 65 20 63 6f 6c 75 6d 6e | ; remov|e column|
|00005700| 27 73 20 62 69 74 73 0d | 20 20 20 20 20 20 20 20 |'s bits.| |
|00005710| 6c 73 72 2e 6c 20 44 32 | 2c 44 34 09 09 20 20 20 |lsr.l D2|,D4.. |
|00005720| 20 20 20 20 20 3b 20 73 | 68 69 66 74 20 64 6f 77 | ; s|hift dow|
|00005730| 6e 20 74 6f 20 72 6f 77 | 2c 20 4e 4f 54 20 72 69 |n to row|, NOT ri|
|00005740| 67 68 74 2d 6a 75 73 74 | 69 66 69 65 64 0d 0d 3b |ght-just|ified..;|
|00005750| 0d 3b 20 67 65 74 20 74 | 68 65 20 73 6f 75 72 63 |.; get t|he sourc|
|00005760| 65 20 62 79 74 65 2c 20 | 61 6e 64 20 62 69 74 20 |e byte, |and bit |
|00005770| 6f 66 66 73 65 74 2e 20 | 20 44 34 20 68 61 73 20 |offset. | D4 has |
|00005780| 74 68 65 20 62 69 74 20 | 6f 66 66 73 65 74 20 69 |the bit |offset i|
|00005790| 6e 20 72 6f 77 73 2c 20 | 61 6e 64 0d 3b 20 44 36 |n rows, |and.; D6|
|000057a0| 20 69 73 20 63 6f 6c 75 | 6d 6e 73 2e 0d 3b 0d 0d | is colu|mns..;..|
|000057b0| 20 20 20 20 20 20 20 20 | 6d 6f 76 65 2e 77 20 41 | |move.w A|
|000057c0| 35 2c 44 31 09 09 20 20 | 20 20 20 20 20 20 3b 20 |5,D1.. | ; |
|000057d0| 67 65 74 20 74 68 65 20 | 73 74 72 69 64 65 20 70 |get the |stride p|
|000057e0| 65 72 20 72 6f 77 20 28 | 69 6e 20 62 69 74 73 29 |er row (|in bits)|
|000057f0| 0d 20 20 20 20 20 20 20 | 20 6d 75 6c 75 20 44 34 |. | mulu D4|
|00005800| 2c 44 31 09 09 20 20 20 | 20 20 20 20 20 3b 20 73 |,D1.. | ; s|
|00005810| 74 72 69 64 65 20 2a 20 | 72 6f 77 3b 20 66 69 6e |tride * |row; fin|
|00005820| 64 20 73 6f 75 72 63 65 | 20 72 6f 77 27 73 20 6f |d source| row's o|
|00005830| 66 66 73 65 74 20 69 6e | 20 62 69 74 73 0d 20 20 |ffset in| bits. |
|00005840| 20 20 20 20 20 20 61 64 | 64 2e 6c 20 44 36 2c 44 | ad|d.l D6,D|
|00005850| 31 09 09 20 20 20 20 20 | 20 20 20 3b 20 61 64 64 |1.. | ; add|
|00005860| 20 69 6e 20 63 6f 6c 75 | 6d 6e 20 6f 66 66 73 65 | in colu|mn offse|
|00005870| 74 20 28 62 69 74 73 29 | 0d 20 20 20 20 20 20 20 |t (bits)|. |
|00005880| 20 61 64 64 2e 6c 20 41 | 30 2c 44 31 09 09 20 20 | add.l A|0,D1.. |
|00005890| 20 20 20 20 20 20 3b 20 | 70 6c 75 73 20 62 61 73 | ; |plus bas|
|000058a0| 65 20 6f 66 20 62 69 74 | 6d 61 70 20 28 62 69 74 |e of bit|map (bit|
|000058b0| 73 20 5b 73 69 63 5d 29 | 0d 20 20 20 20 20 20 20 |s [sic])|. |
|000058c0| 20 6d 6f 76 65 2e 62 20 | 44 31 2c 44 37 09 09 20 | move.b |D1,D7.. |
|000058d0| 20 20 20 20 20 20 20 3b | 20 73 61 76 65 20 74 68 | ;| save th|
|000058e0| 65 20 62 6f 74 74 6f 6d | 20 74 68 72 65 65 20 62 |e bottom| three b|
|000058f0| 69 74 73 20 66 6f 72 20 | 74 68 65 20 42 54 53 54 |its for |the BTST|
|00005900| 0d 20 20 20 20 20 20 20 | 20 6c 73 72 2e 6c 20 23 |. | lsr.l #|
|00005910| 33 2c 44 31 09 09 20 20 | 20 20 20 20 20 20 3b 20 |3,D1.. | ; |
|00005920| 77 68 69 6c 65 20 77 65 | 20 73 68 69 66 74 20 64 |while we| shift d|
|00005930| 6f 77 6e 20 74 6f 20 61 | 20 77 6f 72 64 20 61 64 |own to a| word ad|
|00005940| 64 72 65 73 73 0d 20 20 | 20 20 20 20 20 20 6d 6f |dress. | mo|
|00005950| 76 65 2e 6c 20 44 31 2c | 41 33 09 09 20 20 20 20 |ve.l D1,|A3.. |
|00005960| 20 20 20 20 3b 20 61 6e | 64 20 73 61 76 65 20 74 | ; an|d save t|
|00005970| 68 61 74 20 66 6f 72 20 | 74 68 65 20 74 65 73 74 |hat for |the test|
|00005980| 2c 20 74 6f 6f 0d 20 20 | 20 20 20 20 20 20 6e 6f |, too. | no|
|00005990| 74 2e 62 20 44 37 09 09 | 20 20 20 20 20 20 20 20 |t.b D7..| |
|000059a0| 3b 20 67 65 74 20 72 69 | 67 68 74 20 62 69 74 20 |; get ri|ght bit |
|000059b0| 6e 75 6d 62 65 72 20 28 | 63 6f 6d 70 75 74 65 20 |number (|compute |
|000059c0| 23 37 2d 44 37 29 0d 0d | 3b 0d 3b 20 66 69 6e 64 |#7-D7)..|;.; find|
|000059d0| 20 74 68 65 20 64 65 73 | 74 69 6e 61 74 69 6f 6e | the des|tination|
|000059e0| 20 62 69 74 20 61 64 64 | 72 65 73 73 20 61 6e 64 | bit add|ress and|
|000059f0| 20 62 69 74 20 6f 66 66 | 73 65 74 0d 3b 0d 0d 20 | bit off|set.;.. |
|00005a00| 20 20 20 20 20 20 20 6d | 6f 76 65 2e 77 20 41 36 | m|ove.w A6|
|00005a10| 2c 44 31 09 09 20 20 20 | 20 20 20 20 20 3b 20 65 |,D1.. | ; e|
|00005a20| 78 74 72 61 63 74 20 63 | 75 6e 6e 69 6e 67 6c 79 |xtract c|unningly|
|00005a30| 20 68 69 64 64 65 6e 20 | 64 65 73 74 69 6e 61 74 | hidden |destinat|
|00005a40| 69 6f 6e 20 73 74 72 69 | 64 65 0d 20 20 20 20 20 |ion stri|de. |
|00005a50| 20 20 20 6d 75 6c 75 20 | 44 31 2c 44 34 09 09 20 | mulu |D1,D4.. |
|00005a60| 20 20 20 20 20 20 20 3b | 20 73 74 72 69 64 65 2a | ;| stride*|
|00005a70| 72 6f 77 20 6e 75 6d 62 | 65 72 20 3d 20 64 65 73 |row numb|er = des|
|00005a80| 74 20 72 6f 77 27 73 20 | 6f 66 66 73 65 74 20 69 |t row's |offset i|
|00005a90| 6e 20 62 69 74 73 0d 20 | 20 20 20 20 20 20 20 61 |n bits. | a|
|00005aa0| 64 64 2e 6c 20 44 36 2c | 44 34 09 09 20 20 20 20 |dd.l D6,|D4.. |
|00005ab0| 20 20 20 20 3b 20 61 64 | 64 20 69 6e 20 63 6f 6c | ; ad|d in col|
|00005ac0| 75 6d 6e 20 62 69 74 20 | 6f 66 66 73 65 74 0d 20 |umn bit |offset. |
|00005ad0| 20 20 20 20 20 20 20 61 | 64 64 2e 6c 20 41 31 2c | a|dd.l A1,|
|00005ae0| 44 34 09 09 20 20 20 20 | 20 20 20 20 3b 20 61 6e |D4.. | ; an|
|00005af0| 64 20 62 61 73 65 20 61 | 64 64 72 65 73 73 2c 20 |d base a|ddress, |
|00005b00| 61 6c 73 6f 20 69 6e 20 | 62 69 74 73 0d 20 20 20 |also in |bits. |
|00005b10| 20 20 20 20 20 6d 6f 76 | 65 2e 62 20 44 34 2c 44 | mov|e.b D4,D|
|00005b20| 36 09 09 20 20 20 20 20 | 20 20 20 3b 20 73 65 74 |6.. | ; set|
|00005b30| 20 61 73 69 64 65 20 74 | 68 65 20 62 69 74 20 64 | aside t|he bit d|
|00005b40| 69 73 70 6c 61 63 65 6d | 65 6e 74 0d 20 20 20 20 |isplacem|ent. |
|00005b50| 20 20 20 20 6c 73 72 2e | 6c 20 23 33 2c 44 34 09 | lsr.|l #3,D4.|
|00005b60| 09 20 20 20 20 20 20 20 | 20 3b 20 6d 61 6b 65 20 |. | ; make |
|00005b70| 61 20 62 79 74 65 20 64 | 69 73 70 6c 61 63 65 6d |a byte d|isplacem|
|00005b80| 65 6e 74 0d 20 20 20 20 | 20 20 20 20 6e 6f 74 2e |ent. | not.|
|00005b90| 62 20 44 36 09 09 20 20 | 20 20 20 20 20 20 3b 20 |b D6.. | ; |
|00005ba0| 67 65 74 20 72 69 67 68 | 74 20 62 69 74 20 6e 75 |get righ|t bit nu|
|00005bb0| 6d 62 65 72 20 28 63 6f | 6d 70 75 74 65 20 23 37 |mber (co|mpute #7|
|00005bc0| 2d 44 36 29 0d 0d 20 20 | 20 20 20 20 20 20 62 74 |-D6).. | bt|
|00005bd0| 73 74 20 44 37 2c 28 41 | 33 29 09 09 20 20 20 20 |st D7,(A|3).. |
|00005be0| 20 20 20 20 3b 20 74 65 | 73 74 20 74 68 65 20 44 | ; te|st the D|
|00005bf0| 37 74 68 20 62 69 74 20 | 6f 66 20 73 6f 75 72 63 |7th bit |of sourc|
|00005c00| 65 20 62 79 74 65 0d 20 | 20 20 20 20 20 20 20 6d |e byte. | m|
|00005c10| 6f 76 65 2e 6c 20 44 34 | 2c 41 33 09 09 20 20 20 |ove.l D4|,A3.. |
|00005c20| 20 20 20 20 20 3b 20 70 | 6f 69 6e 74 20 74 6f 20 | ; p|oint to |
|00005c30| 74 61 72 67 65 74 20 62 | 79 74 65 20 28 64 6f 6e |target b|yte (don|
|00005c40| 27 74 20 6c 6f 73 65 20 | 43 43 20 66 72 6f 6d 20 |'t lose |CC from |
|00005c50| 62 74 73 74 29 0d 20 20 | 20 20 20 20 20 20 62 6e |btst). | bn|
|00005c60| 65 2e 73 20 53 45 54 4f | 4e 09 09 20 20 20 20 20 |e.s SETO|N.. |
|00005c70| 20 20 20 3b 20 69 66 20 | 6f 6e 2c 20 67 6f 20 73 | ; if |on, go s|
|00005c80| 65 74 20 64 65 73 74 69 | 6e 61 74 69 6f 6e 20 6f |et desti|nation o|
|00005c90| 6e 0d 20 20 20 20 20 20 | 20 20 62 63 6c 72 20 44 |n. | bclr D|
|00005ca0| 36 2c 28 41 33 29 09 09 | 20 20 20 20 20 20 20 20 |6,(A3)..| |
|00005cb0| 3b 20 65 6c 73 65 20 63 | 6c 65 61 72 20 64 65 73 |; else c|lear des|
|00005cc0| 74 69 6e 61 74 69 6f 6e | 20 62 69 74 0d 0d 3b 0d |tination| bit..;.|
|00005cd0| 3b 20 66 69 6e 64 20 74 | 68 65 20 6e 65 78 74 20 |; find t|he next |
|00005ce0| 73 65 71 75 65 6e 63 65 | 20 65 6c 65 6d 65 6e 74 |sequence| element|
|00005cf0| 2e 20 20 73 65 65 20 6b | 6e 75 74 68 2c 20 76 6f |. see k|nuth, vo|
|00005d00| 6c 20 69 69 2e 2c 20 70 | 61 67 65 20 32 39 20 66 |l ii., p|age 29 f|
|00005d10| 6f 72 20 73 6b 65 74 63 | 68 79 20 64 65 74 61 69 |or sketc|hy detai|
|00005d20| 6c 73 2e 0d 3b 0d 0d 4e | 45 58 54 3a 09 09 09 09 |ls..;..N|EXT:....|
|00005d30| 20 20 20 20 20 20 20 20 | 3b 20 6a 75 6d 70 20 68 | |; jump h|
|00005d40| 65 72 65 20 69 66 20 44 | 30 20 6e 6f 74 20 69 6e |ere if D|0 not in|
|00005d50| 20 62 6f 75 6e 64 73 0d | 20 20 20 20 20 20 20 20 | bounds.| |
|00005d60| 6c 73 72 2e 6c 20 23 31 | 2c 44 30 09 09 20 20 20 |lsr.l #1|,D0.. |
|00005d70| 20 20 20 20 20 3b 20 73 | 6c 69 64 65 20 6f 6e 65 | ; s|lide one|
|00005d80| 20 62 69 74 20 74 6f 20 | 74 68 65 20 72 69 67 68 | bit to |the righ|
|00005d90| 74 0d 20 20 20 20 20 20 | 20 20 62 68 69 2e 73 20 |t. | bhi.s |
|00005da0| 4c 4f 4f 50 52 4f 57 09 | 09 20 20 20 20 20 20 20 |LOOPROW.|. |
|00005db0| 20 3b 20 69 66 20 6e 6f | 20 63 61 72 72 79 20 6f | ; if no| carry o|
|00005dc0| 75 74 2c 20 62 75 74 20 | 6e 6f 74 20 7a 65 72 6f |ut, but |not zero|
|00005dd0| 2c 20 6c 6f 6f 70 0d 0d | 20 20 20 20 20 20 20 20 |, loop..| |
|00005de0| 65 6f 72 2e 6c 20 44 33 | 2c 44 30 09 09 20 20 20 |eor.l D3|,D0.. |
|00005df0| 20 20 20 20 20 3b 20 66 | 6c 69 70 20 6d 61 67 69 | ; f|lip magi|
|00005e00| 63 20 62 69 74 73 20 61 | 70 70 72 6f 70 72 69 61 |c bits a|ppropria|
|00005e10| 74 65 20 74 6f 20 74 68 | 65 20 62 69 74 77 69 64 |te to th|e bitwid|
|00005e20| 74 68 20 77 65 20 77 61 | 6e 74 2e 2e 2e 0d 20 20 |th we wa|nt.... |
|00005e30| 20 20 20 20 20 20 63 6d | 70 2e 6c 20 44 33 2c 44 | cm|p.l D3,D|
|00005e40| 30 09 09 20 20 20 20 20 | 20 20 20 3b 20 2e 2e 2e |0.. | ; ...|
|00005e50| 62 75 74 20 68 61 73 20 | 74 68 69 73 20 62 72 6f |but has |this bro|
|00005e60| 75 67 68 74 20 75 73 20 | 74 6f 20 73 71 75 61 72 |ught us |to squar|
|00005e70| 65 20 31 3f 0d 20 20 20 | 20 20 20 20 20 62 6e 65 |e 1?. | bne|
|00005e80| 2e 73 20 4c 4f 4f 50 09 | 09 20 20 20 20 20 20 20 |.s LOOP.|. |
|00005e90| 20 3b 20 69 66 20 6e 6f | 74 2c 20 6c 6f 6f 70 20 | ; if no|t, loop |
|00005ea0| 62 61 63 6b 3b 20 65 6c | 73 65 2e 2e 2e 0d 0d 20 |back; el|se..... |
|00005eb0| 20 20 20 20 20 20 20 62 | 72 61 20 44 4f 4e 45 09 | b|ra DONE.|
|00005ec0| 09 20 20 20 20 20 20 20 | 20 3b 20 2e 2e 2e 77 65 |. | ; ...we|
|00005ed0| 27 72 65 20 66 69 6e 69 | 73 68 65 64 0d 0d 53 45 |'re fini|shed..SE|
|00005ee0| 54 4f 4e 3a 0d 20 20 20 | 20 20 20 20 20 62 73 65 |TON:. | bse|
|00005ef0| 74 20 44 36 2c 28 41 33 | 29 09 09 20 20 20 20 20 |t D6,(A3|).. |
|00005f00| 20 20 20 3b 20 73 6f 75 | 72 63 65 20 62 69 74 20 | ; sou|rce bit |
|00005f10| 77 61 73 20 6f 6e 3a 20 | 73 65 74 20 64 65 73 74 |was on: |set dest|
|00005f20| 69 6e 61 74 69 6f 6e 20 | 6f 6e 0d 0d 20 20 20 20 |ination |on.. |
|00005f30| 20 20 20 20 3b 20 63 6f | 70 79 20 6f 66 20 61 62 | ; co|py of ab|
|00005f40| 6f 76 65 20 63 6f 64 65 | 2c 20 73 74 6f 6c 65 6e |ove code|, stolen|
|00005f50| 20 66 6f 72 20 69 6e 6c | 69 6e 65 20 73 70 65 65 | for inl|ine spee|
|00005f60| 64 20 2d 2d 20 73 6f 72 | 72 79 2e 0d 20 20 20 20 |d -- sor|ry.. |
|00005f70| 20 20 20 20 6c 73 72 2e | 6c 20 23 31 2c 44 30 09 | lsr.|l #1,D0.|
|00005f80| 09 20 20 20 20 20 20 20 | 20 3b 20 73 6c 69 64 65 |. | ; slide|
|00005f90| 20 6f 6e 65 20 62 69 74 | 20 74 6f 20 74 68 65 20 | one bit| to the |
|00005fa0| 72 69 67 68 74 0d 20 20 | 20 20 20 20 20 20 62 68 |right. | bh|
|00005fb0| 69 2e 73 20 4c 4f 4f 50 | 52 4f 57 09 09 20 20 20 |i.s LOOP|ROW.. |
|00005fc0| 20 20 20 20 20 3b 20 69 | 66 20 6e 6f 20 63 61 72 | ; i|f no car|
|00005fd0| 72 79 20 6f 75 74 2c 20 | 62 75 74 20 6e 6f 74 20 |ry out, |but not |
|00005fe0| 7a 65 72 6f 2c 20 6c 6f | 6f 70 0d 20 20 20 20 20 |zero, lo|op. |
|00005ff0| 20 20 20 65 6f 72 2e 6c | 20 44 33 2c 44 30 09 09 | eor.l| D3,D0..|
|00006000| 20 20 20 20 20 20 20 20 | 3b 20 66 6c 69 70 20 6d | |; flip m|
|00006010| 61 67 69 63 20 62 69 74 | 73 2e 2e 2e 0d 20 20 20 |agic bit|s.... |
|00006020| 20 20 20 20 20 63 6d 70 | 2e 6c 20 44 33 2c 44 30 | cmp|.l D3,D0|
|00006030| 09 09 20 20 20 20 20 20 | 20 20 3b 20 2e 2e 2e 62 |.. | ; ...b|
|00006040| 75 74 20 68 61 73 20 74 | 68 69 73 20 62 72 6f 75 |ut has t|his brou|
|00006050| 67 68 74 20 75 73 20 74 | 6f 20 73 71 75 61 72 65 |ght us t|o square|
|00006060| 20 31 3f 0d 20 20 20 20 | 20 20 20 20 62 6e 65 2e | 1?. | bne.|
|00006070| 73 20 4c 4f 4f 50 09 09 | 20 20 20 20 20 20 20 20 |s LOOP..| |
|00006080| 3b 20 69 66 20 6e 6f 74 | 2c 20 6c 6f 6f 70 20 62 |; if not|, loop b|
|00006090| 61 63 6b 3b 20 65 6c 73 | 65 20 66 61 6c 6c 20 74 |ack; els|e fall t|
|000060a0| 68 72 6f 75 67 68 0d 0d | 0d 3b 0d 3b 20 68 65 72 |hrough..|.;.; her|
|000060b0| 65 20 77 68 65 6e 20 77 | 65 27 72 65 20 64 6f 6e |e when w|e're don|
|000060c0| 65 3b 20 74 68 65 20 28 | 30 2c 30 29 20 70 6f 69 |e; the (|0,0) poi|
|000060d0| 6e 74 20 68 61 73 20 6e | 6f 74 20 62 65 65 6e 20 |nt has n|ot been |
|000060e0| 64 6f 6e 65 20 79 65 74 | 2e 20 20 74 68 69 73 20 |done yet|. this |
|000060f0| 69 73 0d 3b 20 72 65 61 | 6c 6c 79 20 74 68 65 20 |is.; rea|lly the |
|00006100| 28 30 2c 6c 65 66 74 20 | 6d 61 72 67 69 6e 29 20 |(0,left |margin) |
|00006110| 70 6f 69 6e 74 2e 20 20 | 77 65 20 61 6c 73 6f 20 |point. |we also |
|00006120| 6a 75 6d 70 20 68 65 72 | 65 20 66 72 6f 6d 20 61 |jump her|e from a|
|00006130| 6e 6f 74 68 65 72 20 63 | 6f 70 79 20 6c 6f 6f 70 |nother c|opy loop|
|00006140| 2e 0d 3b 0d 0d 44 4f 4e | 45 3a 0d 20 20 20 20 20 |..;..DON|E:. |
|00006150| 20 20 20 6d 6f 76 65 2e | 6c 20 28 53 50 29 2b 2c | move.|l (SP)+,|
|00006160| 41 36 09 09 20 20 20 20 | 20 20 20 20 3b 20 72 65 |A6.. | ; re|
|00006170| 73 74 6f 72 65 20 73 74 | 61 63 6b 20 66 72 61 6d |store st|ack fram|
|00006180| 65 20 70 6f 69 6e 74 65 | 72 0d 0d 20 20 20 20 20 |e pointe|r.. |
|00006190| 20 20 20 6d 6f 76 65 2e | 77 20 73 72 63 4f 75 72 | move.|w srcOur|
|000061a0| 73 2b 6f 4c 62 69 74 73 | 28 41 36 29 2c 44 30 20 |s+oLbits|(A6),D0 |
|000061b0| 20 20 20 3b 20 70 69 63 | 6b 20 75 70 20 62 69 74 | ; pic|k up bit|
|000061c0| 20 6f 66 66 73 65 74 20 | 6f 66 20 6c 65 66 74 20 | offset |of left |
|000061d0| 6d 61 72 67 69 6e 0d 20 | 20 20 20 20 20 20 20 6d |margin. | m|
|000061e0| 6f 76 65 2e 77 20 64 73 | 74 4f 75 72 73 2b 6f 4c |ove.w ds|tOurs+oL|
|000061f0| 62 69 74 73 28 41 36 29 | 2c 44 31 20 20 20 20 3b |bits(A6)|,D1 ;|
|00006200| 20 61 6e 64 20 64 69 74 | 74 6f 20 66 6f 72 20 74 | and dit|to for t|
|00006210| 61 72 67 65 74 0d 20 20 | 20 20 20 20 20 20 6e 6f |arget. | no|
|00006220| 74 2e 62 20 44 30 09 09 | 20 20 20 20 20 20 20 20 |t.b D0..| |
|00006230| 3b 20 66 6c 69 70 20 74 | 6f 20 6e 75 6d 62 65 72 |; flip t|o number|
|00006240| 20 74 68 65 20 62 69 74 | 73 20 66 6f 72 20 36 38 | the bit|s for 68|
|00006250| 30 30 30 0d 20 20 20 20 | 20 20 20 20 6e 6f 74 2e |000. | not.|
|00006260| 62 20 44 31 09 09 20 20 | 20 20 20 20 20 20 3b 20 |b D1.. | ; |
|00006270| 64 69 74 74 6f 0d 0d 3b | 20 61 6c 74 65 72 6e 61 |ditto..;| alterna|
|00006280| 74 65 2c 20 6c 61 74 65 | 20 65 6e 74 72 61 6e 63 |te, late| entranc|
|00006290| 65 2c 20 77 68 65 6e 20 | 53 43 52 45 45 4e 20 72 |e, when |SCREEN r|
|000062a0| 6f 75 74 69 6e 65 20 68 | 61 73 20 61 6c 72 65 61 |outine h|as alrea|
|000062b0| 64 79 20 73 65 74 20 75 | 70 20 44 30 20 61 6e 64 |dy set u|p D0 and|
|000062c0| 20 44 31 20 28 69 74 20 | 64 6f 65 73 6e 27 74 20 | D1 (it |doesn't |
|000062d0| 77 61 6e 74 20 74 68 65 | 20 62 69 74 0d 3b 20 6f |want the| bit.; o|
|000062e0| 66 66 73 65 74 20 6e 65 | 67 61 74 65 64 29 2e 0d |ffset ne|gated)..|
|000062f0| 0d 44 4f 4e 45 41 3a 09 | 09 09 09 20 20 20 20 20 |.DONEA:.|... |
|00006300| 20 20 20 3b 20 6c 61 6e | 64 20 68 65 72 65 20 77 | ; lan|d here w|
|00006310| 69 74 68 20 44 30 2c 20 | 44 31 20 73 65 74 0d 20 |ith D0, |D1 set. |
|00006320| 20 20 20 20 20 20 20 6d | 6f 76 65 2e 6c 20 73 72 | m|ove.l sr|
|00006330| 63 4f 75 72 73 2b 6f 42 | 61 73 65 28 41 36 29 2c |cOurs+oB|ase(A6),|
|00006340| 41 30 20 20 20 20 20 3b | 20 73 65 74 20 75 70 20 |A0 ;| set up |
|00006350| 62 61 73 65 20 70 6f 69 | 6e 74 65 72 20 66 6f 72 |base poi|nter for|
|00006360| 20 6f 75 72 20 73 6f 75 | 72 63 65 20 62 69 74 73 | our sou|rce bits|
|00006370| 0d 20 20 20 20 20 20 20 | 20 6d 6f 76 65 2e 6c 20 |. | move.l |
|00006380| 64 73 74 4f 75 72 73 2b | 6f 42 61 73 65 28 41 36 |dstOurs+|oBase(A6|
|00006390| 29 2c 41 31 20 20 20 20 | 20 3b 20 61 6e 64 20 70 |),A1 | ; and p|
|000063a0| 6f 69 6e 74 65 72 20 66 | 6f 72 20 74 61 72 67 65 |ointer f|or targe|
|000063b0| 74 0d 0d 20 20 20 20 20 | 20 20 20 62 73 65 74 20 |t.. | bset |
|000063c0| 44 31 2c 28 41 31 29 09 | 09 20 20 20 20 20 20 20 |D1,(A1).|. |
|000063d0| 20 3b 20 61 73 73 75 6d | 65 20 73 6f 75 72 63 65 | ; assum|e source|
|000063e0| 20 62 69 74 20 77 61 73 | 20 6f 6e 3b 20 73 65 74 | bit was| on; set|
|000063f0| 20 74 61 72 67 65 74 0d | 20 20 20 20 20 20 20 20 | target.| |
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.